jQuery获取.preventDefault()来处理生成的元素

时间:2014-02-05 03:58:02

标签: javascript jquery html events

我在使用.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如果这还不够信息(对不起,这太乱了)。

2 个答案:

答案 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);
});