JavaScript禁用按钮点击这个

javascript disabled button ondblclick with this

本文关键字:按钮 JavaScript      更新时间:2023-09-26

我有一个按钮,它有一个双击事件,无论按钮是启用还是禁用,我都想运行该事件。我在这里发布了一个类似的问题,但现在我需要从使用 this 参数的禁用按钮运行一个函数,如果我使用 <span> 解决方法,如另一个问题中所述,它为我提供了有关 <span> 元素的信息,而不是 <button> 元素。

JSFIDDLE 示例

我怎样才能解决这个问题?

首先,不能有两个具有相同 id 的元素。您的标记应如下所示:

<button name='name_of_button' id='id_of_button1' ondblclick="runFunction( this );">Enabled Button</button>
<br>
<button name='name_of_button' id='id_of_button2' ondblclick="runFunction( this );" disabled>Disabled Button</button>

其次,使用内联JavaScript不是一个好主意。但是,您的问题可以这样解决:

.HTML:

<div class="wrapper">
    <button name='name_of_button'>Enabled Button</button>
    <div class="over"></div>
</div>
<div class="wrapper">
    <button name='name_of_button' disabled="disabled">Disabled Button</button>
    <div class="over"></div>
</div>

.JS:

window.onload = function() {
    var dblClicked = function() {
        console.log(this.parentNode.childNodes[1].removeAttribute("disabled"));
    }
    var overlays = document.querySelectorAll(".wrapper .over");
    for(var i=0; i<overlays.length; i++) {
        var over = overlays[i];        
        over.addEventListener("dblclick", dblClicked);
    }
}

http://jsfiddle.net/NRKLG/12/

如果元素被禁用,则无法触发事件。这意味着即使将侦听器添加到父元素,也无法侦听 dblclick。因此,您应该在按钮上放置一个覆盖的透明div。