Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我们需要回调中的jQuery click事件_Javascript_Jquery - Fatal编程技术网

Javascript 为什么我们需要回调中的jQuery click事件

Javascript 为什么我们需要回调中的jQuery click事件,javascript,jquery,Javascript,Jquery,您好,我正在使用jquery回调函数检查复选框的状态。我正在使用以下代码,但我无法理解为什么我们需要在回调中再次出现单击事件。在包含代码后,它可以正常工作。有谁能告诉我,用插图来解释这个问题的机制真的很有帮助吗。提前谢谢 线路 jQuery("#dummy").on("click", notify); 真的不应该在回调中。顺便说一句,它没有点击一个按钮,它注册了另一个“点击”侦听器。每次单击时,不仅会有一个,还会有一个额外的侦听器 首先单击,调用一个侦听器并调用“notify”。这就增加了第二

您好,我正在使用jquery回调函数检查复选框的状态。我正在使用以下代码,但我无法理解为什么我们需要在回调中再次出现单击事件。在包含代码后,它可以正常工作。有谁能告诉我,用插图来解释这个问题的机制真的很有帮助吗。提前谢谢

线路

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);