【问题标题】:Cannot bind after unbinding解绑后无法绑定
【发布时间】:2015-01-07 21:30:32
【问题描述】:

我在之前解除绑定后尝试绑定点击事件,但我无法让它工作。

这是我的 HTML:

<div class="input-group date">
    <input type="text" class="form-control" id="dp1" style="width: 100px; vertical-align: middle" />
    <span class="input-group-addon" id="dp1Icon" style="outline-style:none"><img src="<%=context%>/images/calendar-glyph.png"></span>
</div>

输入实际上是一个引导日期选择器组件。跨度包含触发日期选择器打开的引导标志符号。我有一个单选按钮组,可以像这样切换禁用这些:

$(".date-wrap input[type='radio']").on("click", function(e){

        if ($(e.target).val() == "permanent"){
            $("#dp1, #dp1Icon").prop("disabled", true);
            $("#dp1Icon").unbind("click"); // Disabled attribute only works on form controls, not spans. So we have to unbind the event
            $("#dp1").removeAttr("readonly", "readonly");
        }else{
            $("#dp1, #dp1Icon, #e3").prop("disabled", false);
            $("#dp1Icon").bind("click");
            $("#dp1").removeAttr("readonly");
        }
    });

因此,如果他们单击的单选按钮的值为“永久”,则一切都将被禁用;效果很好。否则,我会尝试重新打开它们。

我唯一能想到的是,当我再次尝试将点击事件绑定到字形图标时,我必须定义打开日期选择器的实际处理程序;像这样:

$("#dp1Icon").bind("click", $("#dp1").datepicker('show'));

但是只要我点击另一个单选按钮,我所做的就是打开日期选择器。我希望它仅在他们单击它时打开。 我在这里错过了什么重要的东西?有人有想法吗?

感谢您的任何提示。

【问题讨论】:

  • bind() 需要一个处理程序参数。阅读文档

标签: javascript jquery html twitter-bootstrap


【解决方案1】:

bind("click") 不会神奇地重新添加事件。您需要将其添加回事件。

$("#dp1Icon").on("click", function(){ $("#dp1").datepicker('show'); } );

您最好只在该函数中设置一个标志而不删除该事件。

【讨论】:

  • 谢谢你,非常快速和乐于助人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2010-11-06
相关资源
最近更新 更多