4. Browser Console
Chrome: Option-Command-J or Control-Shift-J
Firefox: Option-Command-K or Control-Shift-K
Internet Explorer: F12
Safari:
• Advanced Settings
• Check box next to “Show Develop menu in menu bar”
•Option-Command-C
17. DOM Traversal
Adding context to narrow things down
$('li');
[<li data-price="100">Unordered list item 1</li>,
<li data-price="275">Unordered list item 2</li>,
<li data-price="50">Unordered list item 3</li>,
<li data-price="150">Unordered list item 4</li>,
<li>Ordered list item 1</li>,
<li>Ordered list item 2</li>,
<li>Ordered list item 3</li>,
<li>Ordered list item 4</li>]
$('li', 'ul');
[<li data-price="100">Unordered list item 1</li>,
<li data-price="275">Unordered list item 2</li>,
<li data-price="50">Unordered list item 3</li>,
<li data-price="150">Unordered list item 4</li>]
18. DOM Traversal
Adding context to narrow things down
$(':nth-child(2)');
[<style>…</style>,
<body>…</body>,
<p id="s1p1" class="active section1">Paragraph 1</p>,
<li data-price="275">Unordered list item 2</li>,
<section id="s2">…</section>,
<p id="s2p1" class="active section2">Paragraph 1</p>,
<li>Ordered list item 2</li>]
$(':nth-child(2)', 'ul');
[<li data-price="275">Unordered list item 2</li>]
Try it!Try it!
19. DOM Traversal
Reading the inner HTML of an element
$('ol').html();
"
<li>Ordered list item 1</li>
<li>Ordered list item 2</li>
<li>Ordered list item 3</li>
<li>Ordered list item 4</li>
"
20. DOM Traversal
Reading the inner text of an element
$('ol').text();
"
Ordered list item 1
Ordered list item 2
Ordered list item 3
Ordered list item 4
"
29. Data Storage
Read data-* attributes from the DOM
<div id="appointment1" data-date="2014-04-11">April 11, 2014</div>
$('#appointment1').data('date');
"2014-04-11"
30. Data Storage
Read data-* attributes from the DOM
<ul>
<li data-price="100">Unordered list item 1</li>
<li data-price="275">Unordered list item 2</li>
<li data-price="50">Unordered list item 3</li>
<li data-price="150">Unordered list item 4</li>
</ul>
$('ul li').data('price');
100
31. Data Storage
Read data-* attributes from the DOM
<ul>
<li data-price="100">Unordered list item 1</li>
<li data-price="275">Unordered list item 2</li>
<li data-price="50">Unordered list item 3</li>
<li data-price="150">Unordered list item 4</li>
</ul>
$('ul li').each(function (idx, el) {
console.log($(el).data('price'));
});
Try it!Try it!
32. Data Storage
Write data-* attributes to elements*
<div id="appointment2">April 11, 2014</div>
$('#appointment1').data('date', '2014-04-11');
*Cached internally. Not written to the DOM.
33. Data Storage
Write data-* attributes to elements*
$('ol li').data('price', 100);
*Cached internally. Not written to the DOM.
35. Data Storage
1) Read the price data from the unordered list items
2) Add a 10% tax to each value
3) Write the newly taxed price to each ordered list counterpart
$('ul li').each(function (idx, el) {
var price = $(el).data('price') * 1.10;
$('ol li').eq(idx).data('price', price);
});
37. Events
Direct event handler assignment
$('a').on('click', function (e) {
e.preventDefault();
// do something
});
38. Events
Direct event handler assignment with data
$('a').on('click',
{priority: 'high'},
function (e) {
e.preventDefault();
console.log(e.data.priority);
});
39. Events
Delegated event handler assignment
$(document).on('click', 'a', function (e) {
e.preventDefault();
// do something
});
Faster.
Future-friendly.
44. Events
Using the right ready
$(document).on('ready', function () {
console.log('Will not fire if assigned late.');
});
$(document).ready(function () {
console.log('Will fire even if assigned late.');
});
49. Building a Plugin
$.fn.hideRemove = function () {
return this.hide('slow', function () {
$(this).remove();
});
};
Which we can then use:
$('p').hideRemove();
Try it!Try it!
50. Thank you!
Happy to answer your questions throughout
the conference and afterwards!
ara.pehlivanian@gmail.com
twitter.com/ara_p