jQuery hasClass在追加元素后不表现

时间:2013-07-25 09:07:18

标签: jquery ajax

正如您所看到的,我循环遍历每个'li'以获取各种元素并绑定事件。函数refreshThis()在从ajax成功回调到“重新加载”dom之后被调用,并再次获取每个元素以绑定我的click事件。

如果我跑:

console.log($(this).hasClass('expanded'));

我得到多个“true”和“false”。点击事件似乎不止一次绑定。

如果我没有在回调中运行refreshThis(),我的点击就不起作用了。我尝试过使用.on这样:

$('#nearestStaticDIV').on('click', $fetchComments, function() {

而不是

$fetchComments.click(function() {

会导致所有点击一次触发。

即使刷新了DOM,我怎样才能使hasClass正常运行?

谢谢! :)

严重简化的代码:

function refreshThis(){

$postlist.children('li').each(function() {

var list = $(this);
var $fetchComments = list.find('h1'); // click this to fetch replies

function fetchReplies() {
...
}

$fetchComments.click(function() { // fetch replies

    if ($(this).hasClass('expanded')) { 
        ...
    } else {
        fetchReplies();
    }

});

$commentPostBtn.click(function(event) {

        $.ajax({
            ...
            success: function(data) {
                refreshThis();
        });
    }
    event.preventDefault();
});

});
}

refreshThis();

0 个答案:

没有答案