如何删除和添加或绑定和取消绑定Jquery中的单击事件

时间:2013-11-18 16:47:36

标签: javascript jquery html jquery-ui jquery-dialog

我想为Jquery对话框启用和禁用单击事件,因此如果用户单击“Link#1”,对话框将打开一次并关闭它应禁用“链接#” 1“,除非用户点击”Link#2“

,否则链接不应打开对话框

我使用 .unbind()方法尝试了jquery,但它没有启用我的按钮第一个链接。它会永久禁用点击事件。

或者是否有其他方法使用“Jquery UI Dialog”允许不打开对话框?

这是我的代码:

HTML

    <span title="Accept" class="Accepted">Accept</span>
    <span title="Reject" class="Rejected">Reject</span>

JQUERY

    $(".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
        }

这是表示我的代码如何工作的小提琴: 的 http://jsfiddle.net/aasthatuteja/W97wP/

请建议!

2 个答案:

答案 0 :(得分:2)

如果更改了输入元素的链接,则可以使用disabled属性。如果要取消绑定然后再绑定click事件,则需要重新调用在原始click事件中调用的新click事件中的所有代码。

此外,您还没有使用以下代码定位被拒绝的跨度。您定位<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");
  });

答案 1 :(得分:0)

我建议禁用你需要的任何按钮,而不是使用unbind。

例如,如果在使用后单击“拒绝”,如果您不希望它们再次单击“拒绝”,请在拒绝处理程序中使用此代码:

$(".Rejected").prop('disabled', true);

如果您想在用户改变主意并点击接受时重新启用此按钮,请在接受代码中使用此按钮:

$(".Rejected").prop('disabled', false);