14のjQueryベストプラクティス


:14 Helpful jQuery Tricks, Notes, and Best Practices


1.jQuery


jQuery


$someDiv  
  .attr('class', 'someClass')  
  .hide()  
  .html('new stuff');

jQuery
var someDiv = $('#someDiv'); 
someDiv.hide();  


var someDiv = $('#someDiv').hide();

jQuery使

2.Find


jQuery

find
// Fine in modern browsers, though Sizzle does begin "running"  
$('#someDiv p.someClass').hide();  
 
// Better for all browsers, and Sizzle never inits.  
$('#someDiv').find('p.someClass').hide(); 

QuerySelectorAllIE6IE7Sizzle Sizzle 
 ['#someDiv', 'p'];

id






findSizzle 

Sizzle 




使


 $('.someElements', '#someContainer').hide(); 

find
$('#someContainer')  
  .find('.someElements')  
  .hide();


// HANDLE: $(expr, context)  
// (which is just equivalent to: $(context).find(expr)  
} else {  
 return jQuery( context ).find( selector );  
}

3.$(this)


DOM
$('#someAnchor').click(function() {  
// Bleh  
  alert( $(this).attr('id') );  
});

idjQueryJavaScript
$('#someAnchor').click(function() {
 alert( this.id );
});

3srchrefstylejQueryIEgetAttribute


// jQuery Source  
var rspecialurl = /href|src|style/;  
// ...  
var special = rspecialurl.test( name );  
// ...  
var attr = !jQuery.support.hrefNormalized && notxml && special ?  
  // Some attributes require a special call on IE  
  elem.getAttribute( name, 2 ) :  
  elem.getAttribute( name );  

jQuery


DOMjQuery
$('#elem').hide();  
$('#elem').html('bla');  
$('#elem').otherStuff();

#elem使
// This works better  
$('#elem')  
  .hide()  
  .html('bla')  
  .otherStuff();  
  
// Or this, if you prefer for some reason.  
var elem = $('#elem');  
elem.hide();  
elem.html('bla');  
elem.otherStuff();

4.Ready



$(document).ready(function() {  
   // let's get up in heeya  
});


$(function() {  
  // let's get up in heeya  
});

jQueryready
if ( jQuery.isFunction( selector ) ) {  
   return rootjQuery.ready( selector );  
}

5.


$

jQuery.noConflict()$
var j = jQuery.noConflict();  
// Now, instead of $, we use j.  
j('#someDiv').hide();  
// The line below will reference some other library's $ function.  
$('someDiv').style.display = 'none';



jQuery$
(function($) {  
  // Within this function, $ will always refer to jQuery  
})(jQuery); 

ready$
jQuery(document).ready(function($) {  
  // $ refers to jQuery  
});

6.


jQueryJavaScript

JavaScriptforjQueryeacheachfor


someDivs.each(function() {  
  $('#anotherDiv')[0].innerHTML += $(this).text();  
  //to-R注意:次のコードじゃないと話がおかしくなるので上記のコードは間違いだと思う
  //$('#anotherDiv')[0].innerHTML += $(this).html();
});

1anotherDiveach
2eachinnerHTML2
3eachjQuery



var someDivs = $('#container').find('.someDivs'),  
    contents = [];  
 
someDivs.each(function() {  
  contents.push( this.innerHTML );  
});  
$('#anotherDiv').html( contents.join('') ); 

each

TIPSjQueryJavaScriptjQuery

DocumentFragment



var someUls = $('#container').find('.someUls'),  
    frag = document.createDocumentFragment(),  
    li;  
  
someUls.each(function() {  
    li = document.createElement('li');  
    li.appendChild( document.createTextNode(this.innerHTML) );  
    frag.appendChild(li);  
});  
  
$('#anotherUl')[0].appendChild( frag ); 

JavaScript

7.Ajax


jQueryAjax$.ajax

$.getJSON
$.getJSON('path/to/json', function(results) {  
     // callback  
    // results contains the returned data object  
});

$.get
getJSON: function( url, data, callback ) {  
    return jQuery.get(url, data, callback, "json");  
}

$.get$.ajax
get: function( url, data, callback, type ) {  
    // shift arguments if data argument was omited  
    if ( jQuery.isFunction( data ) ) {  
        type = type || callback;  
        callback = data;  
        data = null;  
    }  
  
    return jQuery.ajax({  
        type: "GET",  
        url: url,  
        data: data,  
        success: callback,  
          dataType: type  
    });  
} 

$.getJSON
$.getJSON('path/to/json', function(results) {  
    // callback  
    // results contains the returned data object  
}); 

$.ajax
$.ajax({  
    type: 'GET',  
    url : 'path/to/json',  
    data : yourData,  
    dataType : 'json',  
    success : function( results ) {  
        console.log('success');  
    })  
});  

8.


JavaScript
var anchor = document.getElementById('someAnchor');  
// anchor.id  
// anchor.href  
// anchor.title 

DOMjQuery使

var href = $('#someAnchor').id;  

jQuery
// OPTION 1 - jQueryを使う  
var href = $('#someAnchor').attr('id');  
  
// OPTION 2 - DOMでアクセスする  
var href = $('#someAnchor')[0].id;  
  
// OPTION 3 - jQueryのgetメソッドを利用する 
var href = $('#someAnchor').get(0).id; 
 
// OPTION 3b - getでインデックスを指定しない場合 
anchorsArray = $('.someAnchors').get();  
var thirdId = anchorsArray[2].id;  

getjQuery

9.PHPAjax


AjaxAjax

JavaScript$.ajaxheader
if ( !remote ) {  
    xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");  
}

PHPheaderAjax
function isXhr() {  
  return $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest';  
}

10.jQuery  $ 


jQuery  $ jQuery
window.jQuery = window.$ = jQuery;

jQuery  $

(to-R:)

11.jQuery


CDNjQuery
<!-- Grab Google CDN jQuery. fall back to local if necessary -->  
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>  
<script>!window.jQuery && document.write('<script src="js/jquery-1.4.2.min.js"><\/script>')</script> 

12.jQuery



$('p:first').data('info', 'value'); // populates $'s data object to have something to work with   
$.extend(jQuery.expr[":"], {  
 block: function(elem) {  
  return $(elem).css("display") === "block";
 },
 hasData : function(elem) { 
  return !$.isEmptyObject( $(elem).data() ); 
 }  
});
 
$("p:hasData").text("has data"); // grabs paras that have data attached  
$("p:block").text("are block level"); // grabs only parag

:hasDatadata:block

13.hover


jQuery1.4hover1
$('#someElement').hover(function() {  
  // mouseover  
}, function() {  
 // mouseout  
});
 
$('#someElement').hover(function() {  
  // the toggle() method can be used here, if applicable  
});

toggle()

14. 


jQuery1.4$()2

Before 
$('<a />')  
  .attr({  
    id : 'someId',  
    className : 'someClass',  
    href : 'somePath.html'  
  });

After
$('<a/>', {  
    id : 'someId',  
    className : 'someClass',  
    href : 'somePath.html'  
});

click text


jQuery
jQuery25TIPS
8jQueryTIPS
jQuery5TIPS
jQuery使

スポンサードリンク

«mixiチェックのチェックボタンを設置 | メイン | [書評]JavaScriptプログラマのためのWebデザイン入門»