有没有办法摆脱事件处理程序中的:not(.disabled)
,li
有.disabled
,那么“做事”还会发生吗?
我问,因为我记得因为我没有必要将:not(.disabled)
添加到按钮元素,或者可能是一个按钮,其行为类似于内置li a
元素的下拉列表。
HTML
<ul class="dropdown-menu">
<li id="fooId" class="disabled">
text
</li>
</ul>
JAVASCRIPT
$('body').on('click', '#fooId:not(.disabled)', function () {
// "Do stuff.."
});
更新:
Boostrap dropdown li a disabled
已禁用的菜单项
将.disabled添加到下拉列表中的<li>
以禁用该链接。
<ul class="dropdown-menu" aria-labelledby="dropdownMenu4">
<li><a href="#">Regular link</a></li>
<li class="disabled"><a href="#">Disabled link</a></li>
<li><a href="#">Another link</a></li>
</ul>
之前我使用过这种类型,其中包含a
。
我正在将代码重构到另一个类,当我在它的时候,我也移除了a
元素,现在我不得不将:not(.disabled)
添加到eventhandler中,以免进入那里的元素按预期禁用。 但令我惊讶,我想如果删除a
元素,它就不起作用。 (我必须再次测试)。
答案 0 :(得分:1)
只要:not(.disabled')
在DOM结构中是唯一的,您就可以删除id=fooId
。您可以使用以下代码 -
$('body').on('click', '#fooId', function () {
// "Do stuff.."
});
或者,如果li
元素有多个class="disabled"
,那么您可以使用以下代码
$('body').on('click', 'li.disabled', function () {
// "Do stuff.."
});
答案 1 :(得分:1)
如果我理解正确,你想做的是:
$('body').on('click', 'li', function () {
if($(this).hasClass('disabled'))
return; // Do stuff won't execute for disabled li, but will work for others
// "Do stuff.."
});