注意:这是一个最好的方式而不是问题。
我在ul中有几个我想要定位的链接但不是每一个标签。虽然我知道我可以通过ID定位每个元素,但我想知道这个任务的最佳实践(最优化的selceting,最少量的代码)是什么。
$("#id").find("a").click(function(){
//run function
});
标记:
<nav id="id">
<ul>
<li id="want-01"><a href="#">link</a></li>
<li id="want-02"><a href="#">link</a></li>
<li id="want-03"><a href="#">link</a></li>
<li id="dont-want-01"><a href="#">link</a></li>
<li id="dont-want-02"><a href="#">link</a></li>
<li id="want-04"><a href="#">link</a></li>
<li id="want-05"><a href="#">link</a></li>
</ul>
</nav>
答案 0 :(得分:2)
这里使用类似乎是合适的。创建一个名为'li_link'的新类,并将其添加到要链接到的li元素中。然后将您的点击处理程序应用于该类的所有元素,例如
$('.li_link').click(function() {...});
如果要更改动态处理的li元素,可以考虑使用实时事件。这允许您从li元素添加和删除'li_link'类,并且单击处理程序将自动应用或停止应用于li元素。
要设置直播活动,请使用以下内容:
$('.li_link').live('click', function() {...});
答案 1 :(得分:1)
$("#id").find("a").not("#dont-want-01 a, #dont-want-02 a").click(function(){
});
答案 2 :(得分:0)
实际上没有办法用HTML来实现,但是如果你实现了一个rel attr或class,你可以很容易地选择它。
<nav id="id">
<ul>
<li id="want-01" rel="wanted"><a href="#">link</a></li>
<li id="want-02" rel="wanted"><a href="#">link</a></li>
<li id="want-03" rel="wanted"><a href="#">link</a></li>
<li id="dont-want-01"><a href="#">link</a></li>
<li id="dont-want-02"><a href="#">link</a></li>
<li id="want-04" rel="wanted"> <a href="#">link</a></li>
<li id="want-05" rel="wanted"><a href="#">link</a></li>
</ul>
</nav>
$("#id").find('li[rel=wanted]').children();