0

我对 jQuery click 事件有一个简单的问题,我无法解决。

这是代码:

$('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

尝试这个

$(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

您不需要 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

您的代码的问题是您没有处理关闭,请检查

以下应该工作:

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