这是一段简单的代码,所以我不会解释它的作用。
此处的问题是在我点击.likes.1
div然后再点击.likes.2
div然后再次点击.likes.1
后,它最终显示.article-info
div。
所以即使属性姓氏删除它仍然执行它的任务。
为什么会这样?
$(document).ready(function() {
$(".likes.1[surname|='first']").click(function() {
generate('information');
$(this).removeAttr('surname');
$(".article-info").show();
});
$(".likes.2").click(function() {
$(".article-info").hide();
});
答案 0 :(得分:2)
点击事件的绑定发生在页面加载上,或者更准确地发生在DOM就绪上。
$(".likes.1[surname|='first']").click(function() { ... })
这会将事件绑定到与pageload上的该选择器匹配的任何和所有元素,删除属性,类,ID或稍后与该选择器相关的任何其他内容都不会更改,因为事件已经绑定。
您需要取消绑定事件或使用委托事件处理程序,因为委派的处理程序将在每次单击时检查选择器:
$(document).on("click", ".likes.1[surname|='first']", function() { ... })
您应该使用最接近目标元素的可用父元素而不是文档(并且仅包含数字的类通常不是一个好主意。)
或类似的东西:
$(".likes.1[surname|='first']").on('click', function() {
generate('information');
$(this).off('click');
$(".article-info").show();
});