作者:那一抹细雨 | 来源:互联网 | 2023-05-26 15:42
这将是一个难以解释的...
我有一个按钮,这是一个自定义按钮.
在用户单击之后,我执行AJAX调用并向数据库添加一行,然后添加和删除该类.
btn.removeClass('btn-success')
.removeClass("like-post")
.addClass('btn-default')
.addClass('unlike-post')
.html(" Un-like");
这一切都运行正常,除非在课程改为'不匹配'之后,按钮仍然会对类似后的类触发器做出反应.
所以我有这个:
$(".like-post").on('click', function(){ });
即使在按钮没有类似帖子之后,也会执行该操作.我已经检查过,该课程肯定会被删除/正确添加.
我想用不同的帖子类进行另一个动作,但是在解决之前不能这样做.
我注意到我网站上其他地方有关于.on()的类似问题.我无法在jsFiddle中重现这个问题,因为它在那里工作得很好.
使用bootstrap +最新的jQuery版本.有任何想法吗?我知道这是一个很长的镜头,但认为有人可能有类似的问题.
谢谢.
1> Gone Coding..:
问题是您将处理程序连接到元素,之后如果类更改则无关紧要.
使用附加到不变的祖先的委托处理程序:
$(document).on("click", ".like-post", function(){ });
委托事件通过监听事件来冒泡到祖先元素.然后,他们在事件时间(而不是事件注册时间)将jQuery过滤器应用于bubble-chain中的元素.然后,它们仅将函数应用于导致事件的匹配元素.这种类型的处理程序实际上可以更高效(因为它以更快的设置时间交换速度稍慢的事件处理程序).由于点击速度非常慢,您永远不会注意到委托事件处理程序比直接连接的处理程序慢.
is the default if no other element is handy, but never use
委托事件的文档正文`因为它有一个错误(如果样式导致计算的正文高度为0,它将不响应鼠标事件).
通常,您会尝试绑定到更改元素附近的祖先.
我不知道'身体'的错误.你能链接到更多信息吗?