0

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

如果我运行:

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

我得到多个“真”和“假”。似乎点击事件被绑定了不止一次。

如果我不在回调中运行 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();
4

0 回答 0