2012-10-04 56 views
0

我與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.'); 
     }); 
    } 
}); 
+1

你爲什麼在javascript代碼中有'
'標記? – Johan

+0

好的。只是爲了換行。如果我將刪除那麼我也得到同樣的問題。 –

回答

6

你並不需要循環。大多數jQuery方法將在的每個項目上運行匹配集。另外,document不應被引用。您要選擇實際的document對象。如果它的報價,jQuery將尋找與標籤名稱爲「文件」的元素:

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

旁註:實際上它並不重要字符串「文件」將不匹配這種情況下的任何事情不管它包含什麼(即使它是空的),ready方法都可以在任何jQuery對象上運行。對於其他人閱讀你的代碼(以及你自己的未來)來實際選擇document對象會更有意義。由於這些原因,我通常使用替代形式:

$(function() { 
    // This is the same as $(document).ready(function() {}); 
}); 
+0

是的,它正在工作。謝謝 –

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.'); 
    });   
}); 
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.'); 
    }); 
} 
}); 
0

的問題與您的代碼是,你不照顧關閉,檢查this

下面應該工作:

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