当元素被禁用时,委托单击事件不会触发

时间:2013-07-31 19:35:45

标签: javascript jquery html events dom

当我将单击处理程序绑定到禁用该元素的元素时,然后尝试将另一个事件委托给它,第二个事件不会触发。

这有一个简单的解决方案吗?

DEMO

$('button').click(function() {
    log('first click fired');
    $(this).prop('disabled', true);
});
$('span').on('click', 'button', function() {
    log('second click fired');
});

HTML:

<span><button>click</button></span>

编辑:

为了澄清,在对象上设置点击事件将触发as seen in this edit,我希望能够通过委派

来实现

1 个答案:

答案 0 :(得分:4)

禁用元素不会触发鼠标事件,因为它们是......等待...禁用。

由于它们不会触发鼠标事件,因此没有事件会触发到范围,并且事件处理程序永远不会触发。

解决方案是不禁用该元素,就我所知,它几乎是唯一的解决方案,但如果您解释为什么需要这种行为,也许有人可以帮助您解决方法?

修改

如果您创建自己的代表团,它似乎有效:

$('span').on('click', function(e) {
    if (e.target.tagName.toLowerCase() === 'button')
        log('second click fired');
});

FIDDLE