我正在尝试将onclick
事件添加到特定li
的某个标记,该标记在ul
的编号为#nav
之下。选择多个li,它是使用jquery的第一个孩子
HTML结构:
<ul id="nav">
<li><a href="#">link1</a></li>
<li>
<a href="#">link2</a>
<ul>
<li><a href="#">innerlink1</a></li>
<li><a href="#">innerlink2</a></li>
</ul>
</li>
<li><a href="#">link3</a></li>
<li>
<a href="#">link4</a>
<ul>
<li><a href="#">innerlink1</a></li>
<li><a href="#">innerlink2</a></li>
</ul>
</li>
</ul>
jQuery的
$(document).ready(function() {
$("ul#nav li").eq(1).children().first().click(function(){
$(this).attr('onclick', 'return false;');
return false;
});
$("ul#nav li").eq(5).children().first().click(function(){
$(this).attr('onclick', 'return false;');
return false;
});
});
如果你看到的,我写的jQuery两次选择已经得到了另一个ul
里面的一个li
项目的元素和onclick
事件添加到它。这工作正常。但是有没有办法减少我的代码并使其更加干净?
'$(this).attr('onclick','return false;');'这种反模式在你的代码中做了什么?去掉它。 – undefined
你是什么意思反模式?你能解释一下吗?我想学习。 – user3531929
我的意思是使用jQuery设置html事件属性是一个坏主意,除了根据[关注点分离](http:// stackoverflow。问题/问题/ 98734 /什么是分离关注)原则。在你的代码中'return false'做你想要的,它阻止事件的默认动作并停止它的传播。 – undefined