我有一个input type="image"。这类似于Microsoft Excel中的单元格注释。如果有人在与此输入图像配对的文本框中输入数字,我将为输入图像设置一个事件处理程序。然后,当用户单击图像时,他们会看到一个小弹出窗口,向数据中添加一些注释。

我的问题是,当用户在文本框中输入0时,我需要禁用输入图像的事件处理程序。我试过以下方法,但都没用。

$('#myimage').click(function { return false; });

当前回答

2014年更新

使用最新版本的jQuery,您现在可以通过简单地执行$(“#foo”)来解除名称空间上的所有事件绑定。(“。myNamespace”);

其他回答

谢谢你提供的信息。非常有用,我用它来锁定页面交互,而在编辑模式下的另一个用户。我将它与ajaxComplete结合使用。不一定是相同的行为,但有些相似。

function userPageLock(){
    $("body").bind("ajaxComplete.lockpage", function(){
        $("body").unbind("ajaxComplete.lockpage");
        executePageLock();      
    });
};  

function executePageLock(){
    //do something
}

希望我下面的代码说明一切。 HTML:

(function($){ $("#btn_add").on("click",function(){ $("#btn_click").on("click",added_handler); alert("Added new handler to button 1"); }); $("#btn_remove").on("click",function(){ $("#btn_click").off("click",added_handler); alert("Removed new handler to button 1"); }); function fixed_handler(){ alert("Fixed handler"); } function added_handler(){ alert("new handler"); } $("#btn_click").on("click",fixed_handler); $("#btn_fixed").on("click",fixed_handler); })(jQuery); <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button id="btn_click">Button 1</button> <button id="btn_add">Add Handler</button> <button id="btn_remove">Remove Handler</button> <button id="btn_fixed">Fixed Handler</button>

如果.on()方法之前与特定选择器一起使用,如下例所示:

$('body').on('click', '.dynamicTarget', function () {
    // Code goes here
});

unbind()和.off()方法都不能工作。

然而,.undelegate()方法可用于完全从事件中删除与当前选择器匹配的所有元素的处理程序:

$("body").undelegate(".dynamicTarget", "click")

我必须使用道具和attr将事件设置为null。我不能只选一个。我也无法摆脱工作的束缚。我正在做TD元素。

.prop("onclick", null).attr("onclick", null)

我知道这来晚了,但为什么不使用纯JS删除事件?

var myElement = document.getElementById("your_ID");
myElement.onclick = null;

或者,如果你使用一个命名函数作为事件处理程序:

function eh(event){...}
var myElement = document.getElementById("your_ID");
myElement.addEventListener("click",eh); // add event handler
myElement.removeEventListener("click",eh); //remove it