jQuery/HTML - 禁用OnClick

use*_*466 3 html javascript jquery onclick

正如标题所说我试图禁用OnClick特定的

<div id="test" style="display: block; opacity: 0.89;"></div>
Run Code Online (Sandbox Code Playgroud)

这个div是从外部脚本加载的,它被混淆,所以我看不到具体的代码.

我试图删除这个

$("#test").click(function(){ return false});
$("#test").unbind();
$("#test").removeAttr("onclick");
//Suggestions which do not work
$('#test').on('click', function(e) {e.preventDefault();return false;});
$("#test").click(function(event){
event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

以上都不是.

编辑:使用.unbind("点击")解决了我的问题; div创建之后.

Sme*_*egs 12

你可以加 off("click");

小提琴

$(function () {
    $("#test").click(function(){alert('test');});
    $("#test").off('click');

});
Run Code Online (Sandbox Code Playgroud)

此代码将演示删除以前添加的单击事件.

  • 是否有'开'相当于'关'.您可能希望重新启用之前已关闭的点击事件. (3认同)

小智 8

简单的形式,组合jquery与JavaScript.

// To disable:    

$('#test').each(function (){
    this.style.pointerEvents = 'none'; 
}); 

// To re-enable:
$('#test').each(function (){
    this.style.pointerEvents = 'auto'; 
}); 
Run Code Online (Sandbox Code Playgroud)

因此,您可以更改多个标签的选择器


nnn*_*nnn 6

如果在将div添加到页面之前使用它们,那么您尝试过的选项都不会起作用.因此,请务必将代码放在创建div的其他脚本之后的某个位置.

如果多个元素具有相同的id,那么这也是一个问题.

关于您尝试过的各种方法:

$("#test").click(function(){ return false});
$("#test").unbind();
$("#test").removeAttr("onclick");
Run Code Online (Sandbox Code Playgroud)

第一行将向元素添加一个新的单击处理程序,以防止默认行为并阻止事件向上传播,但它不会阻止绑定到该元素的其他事件处理程序运行 - 特别是如果它们在新处理程序之前运行,显然.

第二行将删除使用jQuery附加的事件处理程序,但不删除通过其他方式附加的处理程序.

第三行应该用于删除内联onclick属性(如果存在),但不添加使用jQuery添加的处理程序.

假设即使在将div添加到页面后确保代码运行后仍然无法停止点击行为,您可以尝试类似以下内容:

var $test = $("#test").removeAttr("onclick"),
    $contents = $test.contents().detach();
$test.replaceWith($test.clone(false).append($contents));
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/A9tmu/3/

这个想法是用自身的克隆替换元素,因为克隆的版本(当创建时.clone(false))不会保留事件处理程序.我在克隆之前暂时分离了div内容,这样任何子元素都可以保留它们的事件处理程序.


Jur*_*nov 0

$('#test').on('click', function(e) {e.preventDefault();return false;});
Run Code Online (Sandbox Code Playgroud)