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