0

jQueryクリックイベントに単純な問題がありますが、解決できません。

コードは次のとおりです。

$('document').ready(function() {
    var links = $('.brandLinks li a');
    console.log(links.length); // there are total 24 items are there

    for(var i = 0; i < links.length; i++) {
        links[i].click(function(e){
            console.log('click.');
        });
    }
});
4

4 に答える 4

6

ループする必要はありません。jQuery メソッドの大部分は、一致したセット内の各アイテムに対して動作します。また、document引用してはいけません。実際のdocumentオブジェクトを選択します。引用符で囲まれている場合、jQuery は「document」というタグ名を持つ要素を探します。

$(document).ready(function() {
    $('.brandLinks li a').click(function () {
        console.log('click');
    });
});

補足: この場合、文字列 "document" が何にも一致しないことは実際には問題ではありません。このreadyメソッドは、含まれているものに関係なく (空の場合でも)、任意の jQuery オブジェクトで動作します。documentただし、実際にオブジェクトを選択する方が、コードを読んでいる他の人 (および将来は自分自身) にとってはるかに理にかなっています。これらの理由から、私は通常、別の形式を使用します。

$(function () {
    // This is the same as $(document).ready(function () {});
});
于 2012-10-04T07:44:25.320 に答える
0

イベントをバインドするための for ループは必要ありません。要素全体を一度にバインドできます。link[index]ネイティブの JavaScript 要素です。を使用する必要があり$(link[k]).clickました。

$(document).ready(function() { 
    var links = $('.brandLinks li a'); 
        console.log(links.length); // there are total 24 items are there 
    links.click(function(){
           console.log('click.'); 
    });         
}); 
于 2012-10-04T07:44:40.803 に答える
0

これを試して

$(document).ready(function() {
var links = $('.brandLinks li a');
console.log(links.length); // there are total 24 items are there

for(var i = 0; i < links.length; i++) {
    links[i].click(function(e){
        console.log('click.');
    });
}
});
于 2012-10-04T07:45:09.510 に答える
0

コードの問題は、クロージャを処理していないことでした。これを確認してください

以下が機能するはずです:

var link = links[i];
 $(link).click((function(value) {
                    return function() {
                      //   
                    };
                })(link));
于 2012-10-04T07:47:59.117 に答える