我在使用.preventDefault处理我通过JQuery生成的一些元素时遇到了一些问题。
我使用以下代码获取JSON文件,并将数据放入单独的p元素中:
$.getJSON(searchURL, function(data) {
$.each(data, function(key, value) {
if (typeof value === 'object') {
for (var i = 0; i < data.count; i++) {
var fullPlayerURL = "<p class='entry'>" + "<a href=" + playerURL + data.data[i].id + ">"
+ "Nickname - " + data.data[i].nickname + "</a>" + "</p>"
$('#results').append(fullPlayerURL);
}
}
});
}); //end getJSON
然后我使用以下代码来阻止链接在单击时重定向(链接到另一个JSON文件):
$('.entry').click(function(event) {
event.preventDefault();
var linkClicked = $(this).attr("href");
console.log(linkClicked);
});
我不知道这是否重要,但#results
只是一个空div。
这是all the code如果这还不够信息(对不起,这太乱了)。
答案 0 :(得分:5)
您需要为动态元素委派事件处理程序
$('#results').on('click', '.entry', function(event){
event.preventDefault();
var linkClicked = $('a', this).attr("href");
console.log(linkClicked);
});
答案 1 :(得分:0)
抱歉,我不允许对adeneo的回答发表评论。
对我来说var linkClicked = $('a', this).attr("href");
给出了未定义的。
我必须从中做出var linkClicked = $(this).attr("href");
。
编辑:知道了,我想解决这个问题。
$('#results').on('click', 'a', function(event) {
event.preventDefault();
var linkClicked = $(this).attr("href");
console.log(linkClicked);
});