如您所见,我正在遍历每个“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();