1. 程式人生 > >jQuery - 使用要點 - 同被選擇元素一起工作

jQuery - 使用要點 - 同被選擇元素一起工作

同被選擇元素一起工作

取得值、設定值:一些jQuery的方法可以同時被用於分配和設定被選擇者的一些值。這些方法在呼叫時,若傳入引數值,那麼其會設定被選擇者的值;若未傳入引數值,那麼其會取得被選擇集中的第一個被選擇者的值。Setters會影響所有被選擇元素的值,而Getters只會返回選擇集中第一個被選擇者的值。例外的是:.text()方法會取得元素的所有值。

// <h1>jQuery</h1>

// .html()方法設定所有<h1>元素的值為:"hello world"
$( "h1" ).html( "hello world" );

// .html()方法返回<h1>元素的值
$( "h1" ).html();
// 返回值為:"hello world"

Setter模式,會返回一個jQuery物件,可以使用此物件繼續呼叫其他的jQuery方法;而Getter模式,會返回被選擇者的html值,不能繼續用來呼叫其他的jQuery方法。

// 可以正常工作
$( "h1" ).html("Hello World").addClass( "test" );

// 不會正常工作
$( "h1" ).html().addClass( "test" );

方法鏈:若被選擇者呼叫的jQuery方法會返回jQuer物件,那麼可以繼續使用點標來呼叫其他的jQuery方法。方法鏈使用的弊端是難以修改和跟錯。

$( "#content" ).find( "h3" ).eq( 2 ).html( "new text for the third h3!" );

// 更佳的可讀性
$( "#content" )
    .find( "h3" )
    .eq( 2 )
    .html( "new text for the third h3!" );

jQuery同時提供.end()方法,用以在方法鏈中返回到原始的選擇集中。

$( "#content" )
    .find( "h3" )
    .eq( 2 )
        .html( "new text for the third h3!" )
        .end() // 還原到#content中所有的<h3>元素集#content
    .eq( 0 )
        .html( "new text for the first h3!" );