【问题标题】:javascript disabled button ondblclick with thisjavascript禁用按钮ondblclick与此
【发布时间】:2013-10-21 01:31:03
【问题描述】:

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

jsfiddle example

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

【问题讨论】:

    标签: javascript function onclick this


    【解决方案1】:

    首先,不能有两个具有相同 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。

    【讨论】:

    • 对不起,我不明白。我的目标是允许在禁用时使用禁用按钮,而不是重新启用它。
    • 据我所知,如果元素被禁用,您将无法监听其中的事件。因此,您应该将其包装在一个 div 中并在其上附加 dblclick 事件。
    • 我会这样做,但我需要 this 部分才能使用 burron
    猜你喜欢
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 2014-08-21
    • 2017-09-12
    相关资源
    最近更新 更多