jQuery hasClass在附加元素后不起作用

jQuery hasClass在附加元素后不起作用,jquery,ajax,Jquery,Ajax,正如您所看到的,我正在遍历每个“li”,以获取各种元素并绑定事件。函数refreshThis()在ajax成功回调后被调用,以“重新加载”dom并再次获取每个元素以绑定我的单击事件 如果我跑步: console.log($(this).hasClass('expanded')); 我得到多个“真”和“假”。单击事件似乎绑定了多次 如果我没有在回调中运行refreshThis(),我的单击根本不起作用。我已尝试使用。例如: $('#nearestStaticDIV').on('click', $

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

如果我跑步:

console.log($(this).hasClass('expanded'));
我得到多个“真”和“假”。单击事件似乎绑定了多次

如果我没有在回调中运行refreshThis(),我的单击根本不起作用。我已尝试使用。例如:

$('#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();

省去一直添加事件的麻烦,使用和。这样就不必重新绑定,也不必担心出错。
$('nearestStaticDIV')。on('click','h1',function\u name);
@ElYobo我认为这是一个更好的解决方案。但是,在这种情况下,我如何循环遍历每个“li”子项?@Sven尝试了它。它最终运行fetchrepress();对于每个子级。第二个参数
h1
#nearestStaticDiv
中的元素,单击该函数将触发该元素。我只看到js,没有html,因此我假设它是h1。但是如果在staticDiv中使用多个
h1
s,则应该为refresh h1指定一个特殊类,或者如果它是第一个H1然后可以使用
H1:first