Javascript 为什么我们需要回调中的jQuery click事件
您好,我正在使用jquery回调函数检查复选框的状态。我正在使用以下代码,但我无法理解为什么我们需要在回调中再次出现单击事件。在包含代码后,它可以正常工作。有谁能告诉我,用插图来解释这个问题的机制真的很有帮助吗。提前谢谢 线路Javascript 为什么我们需要回调中的jQuery click事件,javascript,jquery,Javascript,Jquery,您好,我正在使用jquery回调函数检查复选框的状态。我正在使用以下代码,但我无法理解为什么我们需要在回调中再次出现单击事件。在包含代码后,它可以正常工作。有谁能告诉我,用插图来解释这个问题的机制真的很有帮助吗。提前谢谢 线路 jQuery("#dummy").on("click", notify); 真的不应该在回调中。顺便说一句,它没有点击一个按钮,它注册了另一个“点击”侦听器。每次单击时,不仅会有一个,还会有一个额外的侦听器 首先单击,调用一个侦听器并调用“notify”。这就增加了第二
jQuery("#dummy").on("click", notify);
真的不应该在回调中。顺便说一句,它没有点击一个按钮,它注册了另一个“点击”侦听器。每次单击时,不仅会有一个,还会有一个额外的侦听器
首先单击,调用一个侦听器并调用“notify”。这就增加了第二个问题
第二次单击,将调用两个列表器,两个列表器都添加另一个列表器,总计为4。下一步单击8,然后单击16。。。点击几下后,你的系统应该会慢下来
因此,删除notify方法中的一个
为什么我们需要回调中的jQuery click事件
如果,而且只有当,你移除的碎片。。。用一些新的HTML替换dummy
然后原始的click事件将被删除,因为它引用的元素将不再存在-因此需要为新的HTML添加事件处理程序
使用事件委派可以更好地服务于此场景
另一种方法是将.on更改为.one,以确保每次只单击一次,例如,如果单击事件处理程序执行一些ajax,并且您不希望用户在保存现有数据时再次单击它
然后在处理完成后重新添加.one事件
鉴于提供的代码有限,您的问题中似乎没有这种情况,因为没有ajax可以等待。如果按钮上有视觉更新(如变灰)也会更好。没有明显的原因。可能原因与你遗漏的代码有关。你的前提是错误的;你不必再这样做了。事实上,这将运行click处理程序代码两次,然后三次,然后四次,等等。在包含代码后,它工作正常-如果您还删除了notify中的一个,它也工作正常吗?我的场景是,我有一个复选框,两个单选按钮和一个submit按钮。现在我选中了状态为checkbox的复选框。正在将选中的属性添加到单选按钮2中。毕竟我提交了它,Ajax请求完成了。在Ajax响应之后。我未选中复选框并尝试将属性“已选中”添加到单选按钮“1”,但无法保持复选框和单选按钮的状态。为此,我使用上述代码,请为这个问题提出任何好的解决方案。
jQuery("#dummy").on("click", notify);