2017-08-12 54 views
1

在下面的代碼段:JQuery索引() - 哪個方向?

$('body').on('click', onClickSelector, function(e) { 

    console.log($(this).index(onClickSelector)); 
    console.log($(onClickSelector).index(this)); 

} 

兩個日誌似乎給出正確的索引值。也就是this的索引,在onClickSelector集合內。

但是從技術上講,哪種方法可以獲得該值?或者兩者是可以互換的?另外,是否有任何問題可能因使用一個而發生?

回答

5

但是從技術上講,哪種方法可以獲得該值?

它們在這種情況下是可以互換的(因爲你還沒有一套方便的匹配)。如果你看一下在幕後jQuery代碼,它看起來像這樣:

index: function(elem) { 

    // No argument, return index in parent 
    if (!elem) { 
     return (this[ 0 ] && this[ 0 ].parentNode) ? this.first().prevAll().length : -1; 
    } 

    // Index in selector 
    if (typeof elem === "string") { 
     return indexOf.call(jQuery(elem), this[ 0 ]); 
    } 

    // Locate the position of the desired element 
    return indexOf.call(this, 

     // If it receives a jQuery object, the first element is used 
     elem.jquery ? elem[ 0 ] : elem 
    ); 
}, 

...他們最終會被同樣的事情:在內部indexOf呼叫傳遞一組,並找到一個元素。