如何在Jquery中移除和添加OR绑定和取消绑定点击事件

how to remove and add back OR bind and unbind a click event in Jquery

本文关键字:绑定 取消 事件 OR 添加 Jquery      更新时间:2023-09-26

我想为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);