正如您所看到的,我循环遍历每个'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();