如果事件目标必须是某个第n个div,那么在点击时捕获事件的可能方式是什么? 例如,我们关注html:
<div id="wrapper">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
如果点击了第二个div,我该如何启动事件?
类似的东西:
if($(event.target).is('item:eq(1)')){alert('second')}
或
if($(event.target).is('.item:eq(1)')){alert('second')}
无效。 JSFiddle快速编辑:http://jsfiddle.net/UXqM2/
感谢大家的回答。但我不需要将代码严格绑定在一个元素上,这就是我询问事件目标的原因。我的功能从
开始clicktarget.on('click', function(event){ //some code here });
clicktarget只是上面示例中的item
类。而且我不想编写3个功能,这些功能只是为了改变一行代码而工作 - 它不好,所以我问这个因为我想要抓住 里面的事件 功能,只需更改一行代码即可。
所以我猜index()应该可以做到。
答案 0 :(得分:2)
上课并不重要。 jquery在默认情况下使用$(this)
获取当前元素 - 表示当前元素
$('.item').on('click', function(event){
alert($(this).index() + 1)
});
答案 1 :(得分:2)
答案 2 :(得分:1)
试试这个:
$('.item:eq(1)').click(function () { alert('second'); });
答案 3 :(得分:1)
如果需要声明,则仅为:
$('.item:eq(1)').click(function(){
alert('second');
});
答案 4 :(得分:0)
$('.item').on('click', function (event) {
if ($(event.target).is('.item:eq(1)')) {
alert('second');
}
});
您错过了.
之前的item
(您想要item
类的项目),您也错过了代码末尾的);
来完成on()
。
另外,如果这是您唯一关注的逻辑,那么您只需将侦听器直接放在该元素上即可...
$('.item:eq(1)').on('click' ...
答案 5 :(得分:0)
你可以试试这个:
if($(event.target).is('.item') && $(event.target).index() === 1){
alert('second')
}
您的绑定事件的关闭错误应为});
。
答案 6 :(得分:0)
<强> Demo 强> 现在为时已晚。试试这个
$('.item').on('click', function(event){
($(this).index()==1)?alert("two"):alert("not two")
});