jQuery Has Coding Standards

60
jQuery Has Coding Standards Now You Tell Me...

Transcript of jQuery Has Coding Standards

Page 1: jQuery Has Coding Standards

jQuery HasCoding

StandardsNow You Tell Me...

Page 2: jQuery Has Coding Standards

Who am I?RJ BruneelUniversity of Central FloridaWeb Applications DeveloperMARKETING DEPARTMENTALUMNI ’97

[email protected]

Page 3: jQuery Has Coding Standards

Why use best practices &standards anyway?

Page 4: jQuery Has Coding Standards

Topics

Loading jQuery

jQuery Variables

jQuery Selectors

jQuery DOM Manipulation

jQuery Events

jQuery AJAX

Miscellaneous

Page 5: jQuery Has Coding Standards

LoadingjQuery

Page 6: jQuery Has Coding Standards

<script src="js/jquery-2.1.4.min.js" type="text/javascript"></script>

Loading jQuery from a local serverLoading jQuery

Page 7: jQuery Has Coding Standards

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"

type="text/javascript"></script>

Loading jQuery from a content delivery network (CDN)

Loading jQuery

Page 8: jQuery Has Coding Standards

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"

type="text/javascript"></script>

Relying solely on a CDNLoading jQuery

Page 9: jQuery Has Coding Standards

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"

type="text/javascript"></script>

<script>window.jQuery || document.write('<script src="js/jquery-

2.1.4.min.js" type="text/javascript"><\/script>');</script>

Implementing a fallbackLoading jQuery

Page 10: jQuery Has Coding Standards

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"

type="text/javascript"></script>

Using protocol dependent URLsLoading jQuery

Page 11: jQuery Has Coding Standards

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"

type="text/javascript"></script>

Using protocol independent URLsLoading jQuery

Page 12: jQuery Has Coding Standards

<head>

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"

type="text/javascript"></script>

</head>

Loading jQuery at the top of the page

Loading jQuery

Page 13: jQuery Has Coding Standards

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"

type="text/javascript"></script>

</body>

</html>

Loading jQuery at the bottom of the page

Loading jQuery

Page 14: jQuery Has Coding Standards

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"

type="text/javascript"></script>

Loading jQuery 2.x if you supportIE 6, 7 or 8

Loading jQuery

Page 15: jQuery Has Coding Standards

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"

type="text/javascript"></script>

Loading jQuery 1.x if you supportIE 6, 7 or 8

Loading jQuery

Page 16: jQuery Has Coding Standards

jQuery Variables

Page 17: jQuery Has Coding Standards

var bigcontainer = $("#container");

Disregarding naming standardsjQuery Variables

Page 18: jQuery Has Coding Standards

var $bigContainer = $("#container");

Following naming standardsjQuery Variables

Page 19: jQuery Has Coding Standards

for(var i = 0; i < 50; i++) {

$("#container").text(i);

}

Searching the DOM for the same element more than once

jQuery Variables

Page 20: jQuery Has Coding Standards

var $container = $("#container");

for(var i = 0; i < 50; i++) {

$container.text(i);

}

Caching jQuery objects using variables

jQuery Variables

Page 21: jQuery Has Coding Standards

$("#link").addClass("bold");

$("#link").fadeIn();

$("#link").removeClass("bold");

Calling multiple methods on the same jQuery object

jQuery Variables

Page 22: jQuery Has Coding Standards

$("#link")

.addClass("bold")

.fadeIn()

.removeClass("bold");

Using the chaining featurejQuery Variables

Page 23: jQuery Has Coding Standards

jQuery Selectors

Page 24: jQuery Has Coding Standards

$(".products");

Searching the DOM for a single element with a class name

jQuery Selectors

Page 25: jQuery Has Coding Standards

$("#products");

Searching the DOM usingan ID selector

jQuery Selectors

Page 26: jQuery Has Coding Standards

$("#container table.attendees td.column");

$("#outer-container #inner");

$("div#inner");

Using multiple IDs, excessive specificity or nesting when selecting an ID

jQuery Selectors

Page 27: jQuery Has Coding Standards

$("#product-container");

$("#product-container").find(".products");

$(".products", "#products-container");

Keeping selectors simple or giving them a context

jQuery Selectors

Page 28: jQuery Has Coding Standards

$(".container > *");

$(":radio");

$(":checkbox");

Using universal selectorsjQuery Selectors

Page 29: jQuery Has Coding Standards

$(".container").children();

$("input[type=checkbox]");

$("input[type=radio]");

Using the children method and being more specific

jQuery Selectors

Page 30: jQuery Has Coding Standards

jQuery DOM Manipulation

Page 31: jQuery Has Coding Standards

var $list = $("#list");

for(var i = 0; i < 1000; i++) {$list.append("<li>"+i+"</li>");

}

Appending the same element many times to the DOM

jQuery DOM Manipulation

Page 32: jQuery Has Coding Standards

var array = []; for(var i = 0; i < 1000; i++){

array[i] = "<li>"+i+"</li>";}

$list.append(array.join(""));

Using string concatenation orarray.join() before appending

jQuery DOM Manipulation

Page 33: jQuery Has Coding Standards

$("#element-not-found").slideUp();

Running jQuery methods on elements that don’t exist

jQuery DOM Manipulation

Page 34: jQuery Has Coding Standards

var $noSuchElement = $("#element-not-found");

if ($noSuchElement.length) {$noSuchElement.slideUp();

}

Verifying objects exist before using them

jQuery DOM Manipulation

Page 35: jQuery Has Coding Standards

var $list = $("#list-container > ul");

// Complicated DOM manipulation methods

Performing lots of DOM manipulation inline

jQuery DOM Manipulation

Page 36: jQuery Has Coding Standards

var $list = $("#list-container > ul").detach();

// Complicated DOM manipulation

$list.appendTo("#list-container");

Detaching elements before DOM manipulation and adding them back

jQuery DOM Manipulation

Page 37: jQuery Has Coding Standards

jQueryEvents

Page 38: jQuery Has Coding Standards

<a id="link" href="#" onclick="linkEventHandler();">link</a>

Putting javascript in the HTML code

jQuery Events

Page 39: jQuery Has Coding Standards

$("#link").on("click", myEventHandler);

Using jQuery to bind eventsjQuery Events

Page 40: jQuery Has Coding Standards

$("#link").on("click", function() {

alert("Link clicked!");

});

Using anonymous functionsjQuery Events

Page 41: jQuery Has Coding Standards

function linkClickHandler() { alert("Link clicked!");

}

$("#link").on("click", linkClickHandler);

Creating a method for your click handlers

jQuery Events

Page 42: jQuery Has Coding Standards

$(function() {

alert("DOM is ready");

});

Using anonymous function for the document ready event handler

jQuery Events

Page 43: jQuery Has Coding Standards

function initPage() {

alert("DOM is ready");

}

$(initPage);

Using named function for the document ready event handler

jQuery Events

Page 44: jQuery Has Coding Standards

$("#list a").on("click", myClickHandler);

Duplicating event handlersjQuery Events

Page 45: jQuery Has Coding Standards

$("#list").on("click", "a", myClickHandler);

Using event delegationjQuery Events

Page 46: jQuery Has Coding Standards

jQuery AJAX

Page 47: jQuery Has Coding Standards

var jqxhr = $.get(url, successHandler);

Using .getJson() or .get()jQuery AJAX

Page 48: jQuery Has Coding Standards

var jqxhr = $.ajax({

url: url,

success: successHandler

});

jqxhr.done(successHandler);

Using $.ajax()jQuery AJAX

Page 49: jQuery Has Coding Standards

var jqxhr = $.ajax({

url: "ajaxURL.php?param1=title&param2=name"

});

Putting parameters in the URLjQuery AJAX

Page 50: jQuery Has Coding Standards

var jqxhr = $.ajax({ url: url, data: {

param1: "Title", param1: "Name" }

});

Putting parameters in the data object

jQuery AJAX

Page 51: jQuery Has Coding Standards

var jqxhr = $.ajax({ url: url });

jqxhr.done(successHandler);

Leaving off error handlingjQuery AJAX

Page 52: jQuery Has Coding Standards

var jqxhr = $.ajax({statusCode: { 404: handler404,

500: handler500 }});jqxhr.fail(failureHandler);

Implementing error handlingjQuery AJAX

Page 53: jQuery Has Coding Standards

Miscellaneous

Page 54: jQuery Has Coding Standards

$("#error-message").css("color":"red", "font-weight":"bold");

Using the CSS method in jQueryMiscellaneous

Page 55: jQuery Has Coding Standards

.error {"color": "red";

"font-weight": "bold";}

$("#error-message").addClass("error");

Using addClass methodMiscellaneous

Page 56: jQuery Has Coding Standards

$link

.attr("href", "#")

.attr("title", "My Title")

.attr("rel", "external");

Repeating jQuery methodsMiscellaneous

Page 57: jQuery Has Coding Standards

$link.attr({"href": "#","title": "My Title","rel": "external"

});

Using object literals for parameters

Miscellaneous

Page 58: jQuery Has Coding Standards
Page 59: jQuery Has Coding Standards

Questions?