如何在Jquery中移除和添加OR绑定和取消绑定点击事件
how to remove and add back OR bind and unbind a click event in Jquery
我想为Jquery对话框启用和禁用单击事件,因此如果用户单击"Link#1",对话框打开一次,关闭后应禁用"Link#1",除非用户单击"Link#2",否则链接不应打开对话框
我使用.unbind()方法尝试了jquery,但它没有启用我的按钮第一链接。它将永久禁用单击事件。
或者"Jquery UI对话框"是否有其他方法允许不打开对话框?
这是我的代码:
HTML
<span title="Accept" class="Accepted">Accept</span>
<span title="Reject" class="Rejected">Reject</span>
查询
$(".Accepted").click(aceeptMethod);
$(".Rejected").click(function () {
$(this).closest('.rx-container').addClass('selected');
$("#rejectReason").dialog("open");
});
$("#rejectReason").dialog({
autoOpen: false,
modal: true,
buttons: {
"Submit": function () {
$(this).dialog("close");
rejectMethod();
},
"Cancel": function () {
$(this).dialog("close");
}
}
});
function aceeptMethod() {
var $parent = $(this).closest('.rx-container');
$(this).next().bind('click'); // BINDING BACK THE CLICK EVENT
$('.rx-statusRejected', $parent).hide();
$('.rx-statusAccepted', $parent).show();
$('.rejectReasonBox', $parent).hide();
}
function rejectMethod() {
$('.selected .rx-statusRejected').show();
$(".selected .rx-statusAccepted").hide();
$(".selected .rejectReasonBox").show();
$('.selected .Rejected').unbind('click'); // UNBINDING THE CLICK EVENT
}
下面是Fiddle,展示我的代码是如何工作的:http://jsfiddle.net/aasthatuteja/W97wP/
请提出建议!
如果更改到输入元素的链接,则可以使用禁用的属性。如果要解除绑定,然后将单击事件绑定回,则需要重新调用在原始单击事件中调用的新单击事件中的所有代码。
此外,您没有使用以下代码瞄准被拒绝的跨度。您的目标是<br>
标签。
$(this).next().bind('click');
你可以试试这样的sibliings函数。
$(this).siblings(".Rejected").bind('click');
与原始代码重新绑定。
$(this).siblings(".Rejected").bind('click',function () {
$(this).closest('.rx-container').addClass('selected');
$("#rejectReason").dialog("open");
});
与其使用unbind,我建议禁用您需要的任何按钮。
例如,如果用户在单击"拒绝"后,如果您不希望他们再次单击"拒绝",请在您的拒绝处理程序中使用以下代码:
$(".Rejected").prop('disabled', true);
如果用户改变主意并点击接受,你想重新启用这个按钮,请在你的接受代码中使用这个:
$(".Rejected").prop('disabled', false);
相关文章:
- 如何销毁/删除/取消绑定SnapSVG.js
- 取消绑定主干视图事件
- 从父元素取消绑定滚动事件并绑定到子元素
- 使用Re-base时,在React中从状态绑定和取消绑定Firebase
- javascript onchange取消绑定错误|未定义
- 在javascript中取消绑定侦听器
- 在偶数侦听器块中绑定和取消绑定
- 取消绑定angular中的scope属性
- 根据文件类型取消绑定和重新绑定click事件处理程序
- 取消计算列的自定义绑定
- 取消绑定而不是重新绑定
- 取消绑定/绑定单击jquery selectbox插件
- 取消绑定后未提交的表单
- 动态取消绑定eventListeners(垃圾收集)
- 取消绑定父节点和子节点
- 取消绑定由加载jQuery'的外部脚本添加的事件;s的getScript函数
- 正在取消绑定jQuery事件处理程序
- setTimeout vs. 事件绑定/取消绑定;什么更有效
- 真正阻止元素绑定-取消绑定元素-AngularJS
- 元素上单击事件的重复绑定-取消绑定