赞
踩
每次打开弹出窗口时都会调用保存这些事件的函数
我有一个功能,我需要在页面上多次调用.该函数包含一些.on(“click”,函数….事件.
为了不让我不断添加越来越多的点击事件到我在每个.on之前的相同元素(“点击”,用.off(“点击”,这是我理解的)是正确的处理方式这个?
我的功能还有以下几点:
$( “#myForm会”).提交(函数(E){…
和…
$( “#myTextArea”).重点(功能(E){…
我的问题是:
我是否需要“取消绑定”(因为缺少一个更好的词).submit和.focus函数的方式与我执行“click”函数的方式相同,以便在每次调用函数时停止这些事件乘以这些元素?
而且,如果我这样做,这样做的正确方法是什么?
非常感谢
约翰 :-)
**更新**
我已根据要求提供了更多细节.
我的页面包括由3个独立按钮启动的3个弹出窗口.弹出窗口的起点只有一个“loading.gif”.当单击每个按钮时,我测试以查看窗口中的“loading.gif”是否处于活动状态,如果是,则使用ajax请求来获取该窗口的正确HTML.
一旦我的ajax请求返回HTML,我将它附加到窗口然后调用此函数将事件绑定到相关的按钮/表单等.
如果他们然后关闭该窗口并打开其他弹出窗口之一,我需要重新调用该函数,因此要确保我不会将每个HTML元素的事件加倍.因此,我先把事件.off转回来.然后把它们放回去.
希望澄清问题背后的推理,但随时可以询问是否不清楚.我也认为谨慎地指出我是jQuery的新手(实际上是javascript),所以这当然不一定是实现此功能的最佳/唯一方式.这只是在编写代码时对我有意义的方式.
最初我有预先填充HTML但是隐藏的弹出窗口,但我发现我的页面大小非常大,我希望改善加载时间等.
解决方法:
你可以按照自己的方式行事.您还可以使用jQuery委派系统.
示例:
你有一个div(我们称之为#test)并在其中添加一些按钮.您删除按钮,再次添加它们…但您想绑定它们上的单击事件.你可以这样做 :
$('#test').on('click', 'button', function(event) {
// Do what you want. this == the clicked button
$(this).css('background-color', 'red');
});
解释:
click事件在#test上绑定,但jQuery将针对css选择器按钮测试单击的目标.这将是点击的目标(而不是#test).这样,您只需创建一次单击侦听器,并且每次创建按钮时都不必添加/删除它.
标签:javascript,jquery
来源: https://codeday.me/bug/20190724/1527408.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。