jquery - 不要在禁用的元素上调用悬停事件

标签 jquery html

是否有某种方法可以在禁用的 html 元素上调用悬停事件?我找到了包装 div 的解决方案,但效果不太好。

例如:

<input type="text" id="someidtext" value="somevalue" disabled="disabled" />
<select id="someidselect" disabled="disabled" > 

$("#someidtext").mouseenter(function () {});
$("#someidselect").mouseenter(function () {});

谢谢

最佳答案

我认为最好的解决方案是检查处理程序内的条件。

$('#someidtext').mouseenter(function (event) {
    if(!this.disabled){
        console.log('x')
    }
})

演示:Fiddle

如果这是不可能的,您可能需要考虑基于事件委托(delegate)的处理程序,例如

<div id="someidtext_wrapper">
    <input type="text" id="someidtext" value="somevalue" disabled="disabled" />
</div>

然后

$('#someidtext_wrapper').on('mouseenter', 'input:not(:disabled)', function () {
    console.log('x')
});

演示:Fiddle

注意:这些解决方案基于这样的假设:注册事件处理程序后禁用状态会动态更改

关于jquery - 不要在禁用的元素上调用悬停事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757113/

相关文章:

javascript - Flexslider 在鼠标悬停时恢复幻灯片放映

javascript - jQuery KendoEditor 不剥离粘贴的 HTML

jquery - 从集合中取出 n 个元素

html - 响应式 iFrame 不适合容器

php - Laravel 获取当前路线

jquery - 防止并发 ajax 请求

jquery - 如何使用 jQuery for div 将自动设置为最小高度?

javascript - 我有一个 Excel 按钮,我想在数据表中添加 pdf 按钮

javascript - 删除 y 轴边距

html - IE兼容模式: strong tag= different width on different PCs?