jQuery click事件没有响应

时间:2012-10-04 07:41:19

标签: javascript jquery

我的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 个答案:

答案 0 :(得分: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 () {});
});

答案 1 :(得分:0)

您不需要循环来绑定事件。你可以一次绑定整个元素。 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.'); 
    });         
}); 

答案 2 :(得分: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.');
    });
}
});

答案 3 :(得分:0)

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

以下应该工作:

var link = links[i];
 $(link).click((function(value) {
                    return function() {
                      //   
                    };
                })(link));