我的主程序中有一些javascript函数(我无法修改此代码),其中一些不需要。我想添加新的javascript并禁用不必要的事件(例如onClick
)。
我尝试了这样的事情:
function disableClickEvent(){
var elems = document.body.getElementsByTagName("a");
for (i = 0; i < elems.length; i++) {
for (var key in toDisableMap) {
if(elems[i].innerHTML == key ){
elems[i].unbind();
break;
}
}
}
}
但是有一个错误(在控制台中):
jQuery.Deferred exception: a[i].unbind is not a function disableClickEvent
我不确定unbind
是禁用事件的正确方法。怎么可能解决这个问题?
答案 0 :(得分:0)
您正在getElementsByTagName
返回的对象上调用jQuery方法。 getElementsByTagName
不返回jQuery对象。您需要在现有代码中执行$(elems[i]).unbind();
或更好地关闭,找到$("a", "body")
之类的锚标记,然后使用它们
答案 1 :(得分:0)
您需要使用jQuery对象才能使用unbind()
。
我更新了您的代码段,将方法更改为jQuery对应方。
function disableClickEvent() {
var elems = $("a");
elems.each(function() {
for (var key in toDisableMap) {
if ($(this).text() == key){
$(this).prop('onclick',null).off('click');
break;
}
}
})
}
答案 2 :(得分:0)
$(document).ready(function(){
$('a').click(function(){
alert($(this).attr('id'));
});
});
function disableClickEvent(){
var elems = document.body.getElementsByTagName("a");
for (i = 0; i < elems.length; i++) {
$(elems[i]).off('click');
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="test1" style="cursor:pointer">Test1</a>
<br>
<a id="test2" style="cursor:pointer">Test2</a>
<br>
<button onclick="disableClickEvent()" value="Disable">Disable</button>
&#13;
使用.Off()时,你必须使用Jquery对象$(elems [i])。off(&#39;点击&#39;);
答案 3 :(得分:0)
检查是否有效。使用$(elems[i]).removeAttr('onclick');
从锚标记中删除click事件。按下按钮后,将删除锚标记中的click事件
function disableClickEvent(){
var elems = document.body.getElementsByTagName("a");
for (i = 0; i < elems.length; i++) {
$(elems[i]).removeAttr('onclick');
/* for (var key in toDisableMap) {
if(elems[i].innerHTML == key ){
elems[i].unbind();
break;
}
}*/
}
}
function clickevent(event){
event.preventDefault();
console.log("clicked")
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="disableClickEvent()"> Remove events </button>
<a href="" onclick="clickevent(event)">Anchor tag click</a>