删除后如何启用点击?

时间:2013-01-07 10:56:59

标签: javascript

我在这里有两个条件,cond1和cond2。如果它是cond1,我将禁用我的onclick事件,否则我将启用它。

这就是我所捕获的:

if(cond1) {
    document.getElementById('mTag').removeAttribute("onclick");
} else {
    document.getElementById('mTag').setAttribute('onclick');
}

问题是一旦onclick被禁用,它就不会再次启用。如果是cond2,则必须启用它。我究竟做错了什么?请提出一些解决方法。

4 个答案:

答案 0 :(得分:4)

你为什么这样做?无论如何,这将是烦人的用户体验。更好的是禁用/启用标记:

document.getElementById('mTag').disabled = cond1;

要阻止点击事件,您必须prevent the event from bubbling upwards

document.getElementById('mTag').onclick = function(e) {
    if (!e) var e = window.event;
    event.cancelBubble = !cond1;

    ...
};

答案 1 :(得分:1)

你做错了。删除属性不会取消绑定事件。 这是正确的方法:

document.getElementById("mTag").onclick = null;

答案 2 :(得分:1)

您无需删除onclick属性即可在处理程序中设置标记

var enable;
function myhandler() {
    if (enable) {
        //my code
    }
}

if(cond1){
   enable = false;
} else {
   enabled = true;
}

答案 3 :(得分:1)

我认为最好设置一个标志,并在处理程序的开头检查该标志:

function handler(event) {
  if ( !this.flag )
    return;
  // do the actual handling
}