以下是我填充列表的方式:
function bingNetworksList(myList) {
var list = '';
for (i = 0; i < myList.length; i++) {
list += '<li><a href="#">' + myList[i] + '</a></li>';
}
$('#myList').empty();
$('#myList').append(list);
}
这是我的html文件:
<ul id="myList"></ul>
我想为每个列表项添加一个click事件(没有单独的id):
$(function() {
$('#myList').click(function() {
var listItem = this.find('a').text();
console.log(listItem); // never logged
});
});
但是,当我点击列表项时,点击事件不会触发。
我做错了什么?
答案 0 :(得分:1)
我只能假设你的控制台出现了js错误。
我为您创建了一份工作样本。我们可以使用事件委派,然后检索被单击的DOM节点。你需要确保在DOM ready事件被触发时调用bingNetworksList [在这里假设拼写错误并且意味着binD;]]函数。
function bingNetworksList(myList) {
var list = '';
for (i = 0; i < myList.length; i++) {
list += '<li><a href="#">' + myList[i] + '</a></li>';
}
$('#myList').empty();
$('#myList').append(list);
}
$(function() {
var list = ["foo", "bar"]
bingNetworksList(list);
$('#myList').click(function(evt) {
var listItem = $(evt.target).text();
console.log(listItem); // never logged
});
});
答案 1 :(得分:1)
您需要将this
包裹在$
内,如下所示:
$(function() {
$('#myList').click(function() {
var listItem = $(this).find('a').text();
console.log(listItem); // will always be logged
});
});