【发布时间】:2016-08-07 09:05:18
【问题描述】:
我有这段代码,我想将不同的事件处理程序附加到每个 <a> 而不使用 id 或类。
我试过了,但没有用...
$('#points ul li a').on('click', function(event) {
// I don't know why this selectors doesn't work
if ($(event.target).is(':eq(0)')) {
alert('0') // and do something
}
if ($(event.target).is(':eq(1)')) {
alert('1') // and do something
}
if ($(event.target).is(':eq(2)')) {
alert('2') // and do something
}
})
#points ul {
list-style: none;
font-size: 5em;
padding: 0;
margin: 0;
line-height: .5em;
}
#points ul li {
float: left;
}
#points ul li a {
text-decoration: none;
color: grey;
padding: .1em;
line-height: .1em
}
#points {
position: relative;
margin: 0 auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="points">
<ul>
<li><a href="#">.</a>
</li>
<li><a href="#">.</a>
</li>
<li><a href="#">.</a>
</li>
</ul>
</div>
<script
提前致谢。
【问题讨论】:
-
所有答案都是正确的。但是当我在网页的主html中插入代码时它没有工作,在我挣扎了一段时间后我意识到为什么:在主html中之前有更多的标签,所以这段代码,例如:( e.is ( 'a:eq(1)' ) 将匹配页面中的第一个 ,而不是 #points div 中的第一个 ,这是真正的目标。我想知道是否可以定位#points 的第一个 标记与计算整个页面中 标记的数量不同。谢谢。
-
#points>ul>li>a:eq(0)可以解决问题。它只需要a内部li内部ul内部#points。我的回答已经有了这个。检查 snipeet 示例。 -
成功了!!有可能做这样的事情吗?数 = 1; $ ( '#points>ul>li>a:eq("num")').toggleClass ( 'color' );
-
$('#points>ul>li>a:eq(' + num + ')')是这样做的正确方法。欢呼 -
非常感谢你的帮助队友!!!
标签: javascript jquery eventhandler