单击后从#id中删除jQuery事件(或防止再次单击)
伙计们 我真的在尽我最大的努力解决下面的问题,但是过了好几个小时,我看不到正确的道路!让我解释一下:单击后从#id中删除jQuery事件(或防止再次单击),jquery,ajax,modal-dialog,jquery-ui-dialog,Jquery,Ajax,Modal Dialog,Jquery Ui Dialog,伙计们 我真的在尽我最大的努力解决下面的问题,但是过了好几个小时,我看不到正确的道路!让我解释一下: 我有一个元素a-href(#opener),当单击它时,会触发一个jQueryUI模式对话框,该对话框通过ajax加载div(#target)中的URL 一切都很完美,但我希望这一切只发生一次 加载模式窗口后,我可以将一个类(.deactivated)设置为我的#opener a-href,并删除id(#opener)以防止再次触发该操作,但它不起作用。。。a-href保持可点击状态,打开模式
- 我有一个元素a-href(#opener),当单击它时,会触发一个jQueryUI模式对话框,该对话框通过ajax加载div(#target)中的URL
- 一切都很完美,但我希望这一切只发生一次李>
- 加载模式窗口后,我可以将一个类(.deactivated)设置为我的#opener a-href,并删除id(#opener)以防止再次触发该操作,但它不起作用。。。a-href保持可点击状态,打开模式窗口(#target)的次数与我点击次数相同李>
- 我找到的唯一解决方案是使用$(this.fadeOut();-)从DOM中完全删除a-href,但这真的很难看,因为我的链接开启器在空气中消失了
$(文档).ready(函数(){
$('#opener')。单击(函数(){
$('#目标')。加载('http://my.url,函数(){
$(“#目标”)。对话框({
标题:“我的标题”,
真的,
dialogClass:“我的班级”,
莫代尔:是的,
隐藏:{效果:“淡入”,速度:“快速”},
显示:{效果:“淡入”,速度:“快速”},
closeOnEscape:没错,
closeText:“Close”,
beforeClose:函数(事件,ui){
'窗口.位置.重新加载(真)'
},
});//结束对话框
});
$(this.addClass('.deactivated');
$(this.removeAttr('id');
});
});
说明 .one(),将处理程序附加到元素的事件。处理程序是 每个元素最多执行一次
从元素中删除ID不会删除绑定在该元素上的任何处理程序(除非您使用了“事件委派”) 使用(而不是
.on
或过时的.bind
)在单击事件上绑定,然后在处理程序第一次触发后自动解除绑定:
$('#opener').one('click', ...)
或禁用单击处理程序中的事件:
$('#opener').on('click', function() {
...
$(this).off('click').addClass('.deactivated');
});
注意:最好总是使用较新的.on
(或.one
)和.off
函数,而不是。bind
、或。click
等。这会使事件处理代码更加一致,并避免与如何注册事件处理程序或(无参数)混淆触发事件处理程序。您可以使用该函数设置只触发一次的事件处理程序,然后将其自身删除:
$('#opener').one('click', function(event) {
// your code here
});
使用一个
:
$('#opener').one("click", function() {
});
非常感谢您!我为自己找不到如此明显的答案而感到羞愧……规则:保存以备可能的重复使用-使用
开/关;仅使用一次,切勿再次使用-使用one
功能亲爱的Alnitak!非常感谢您如此详细的帮助。问题解决了!我使用PHP,正在启动jQuery,您的帮助非常有指导意义。顺致敬意,如果需要,您还可以在one
中设置停用按钮您好,但是如何再次重新激活按钮?例如,当单击另一个元素时#打开器将被激活以再次单击?
$('#opener').one('click', function(event) {
// your code here
});
$('#opener').one("click", function() {
});