试图找出正确的方法来使单击事件不会在禁用链接的图标上触发。问题是当您单击图标时,它会触发单击事件。我需要选择器包含子对象(我认为),以便在启用链接时单击它们触发事件,但在禁用父对象时需要排除子对象。
链接在页面加载后动态设置禁用属性。这就是我使用 .on 的原因
此处演示:(新链接,忘记将链接设置为禁用)
<div class="container">
<div class="hero-unit">
<h1>Bootstrap jsFiddle Skeleton</h1>
<p>Fork this fiddle to test your Bootstrap stuff.</p>
<p>
<a class="btn" disabled>
<i class="icon-file"></i>
Test
</a>
</p>
</div>
</diV>
$('.btn').on('click', ':not([disabled])', function () { alert("test"); });
更新:
我觉得我没有正确使用 .on ,因为它没有考虑 $('.btn') ,只搜索子事件。所以我发现自己在做类似$('someParentElement').on
or之类的事情$('body').on
,因为它假设元素出现在特定上下文中(有人移动链接,现在 javascript 中断),所以更难维护,而我认为第二种方法效率低下。
这是第二个在启用/禁用情况下都能正常工作的示例,但我觉得必须首先选择父元素真的很糟糕,因为如果有人重新排列页面布局,事件将中断: