javascript - 解绑后无法绑定(bind)

标签 javascript jquery html twitter-bootstrap

我在之前取消绑定(bind)点击事件后尝试绑定(bind)它,但无法让它工作。

这是我的 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>

输入实际上是一个 Bootstrap 日期选择器组件。该范围包含一个 Bootstrap 字形,可触发日期选择器打开。我有一个单选按钮组,可以像这样切换禁用这些按钮:

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

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

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

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

但所做的只是在我单击另一个单选按钮时打开日期选择器。我希望它仅在他们单击时打开。 我在这里缺少什么重要的部分?有人有想法吗?

感谢您的任何提示。

最佳答案

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

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

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

关于javascript - 解绑后无法绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27828990/

相关文章:

javascript - 我如何防止 jQuery 函数(读取 thead 第 1 行的标题属性)将检索到的标题应用于文档中的所有表?

javascript - jquery - 限制div中的单词数

javascript - Karma 测试没有加载 AngularJS 工厂

javascript - Angularjs 指令

javascript - 如何在JS中编写正则表达式,前2个字符可以是数字或字母,后跟连字符,然后是6位数字?

html - 防止文本破坏 flexbox 容器

javascript - 尽管数字正确,但滚动条内的元素未对齐

javascript - 获取位于隐藏父级的元素的尺寸

javascript - 我在哪里调用 performance.now() ?

javascript - 在桌面上隐藏后备图像