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)
此代码将演示删除以前添加的单击事件.
小智 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)
因此,您可以更改多个标签的选择器
如果在将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内容,这样任何子元素都可以保留它们的事件处理程序.
$('#test').on('click', function(e) {e.preventDefault();return false;});
Run Code Online (Sandbox Code Playgroud)