第n个div点击抓住事件

时间:2014-06-10 13:05:30

标签: jquery

如果事件目标必须是某个第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()应该可以做到。

7 个答案:

答案 0 :(得分:2)

上课并不重要。 jquery在默认情况下使用$(this)获取当前元素 - 表示当前元素

$('.item').on('click', function(event){ 
       alert($(this).index() + 1)     
});

答案 1 :(得分:2)

您可以使用nth-child css选择器:

$('.item:nth-child(2)').on('click', function(event){
   alert('test'); 
});

DEMO

答案 2 :(得分:1)

试试这个:

$('.item:eq(1)').click(function () { alert('second'); });

答案 3 :(得分:1)

如果需要声明,则仅为:

$('.item:eq(1)').click(function(){
    alert('second');
});

答案 4 :(得分:0)

JSFiddle

$('.item').on('click', function (event) {
    if ($(event.target).is('.item:eq(1)')) {
        alert('second');
    }
});

您错过了.之前的item(您想要item类的项目),您也错过了代码末尾的);来完成on()

另外,如果这是您唯一关注的逻辑,那么您只需将侦听器直接放在该元素上即可...

JSFiddle

$('.item:eq(1)').on('click' ...

答案 5 :(得分:0)

你可以试试这个:

if($(event.target).is('.item') && $(event.target).index() === 1){
   alert('second')
}  

Demo


旁注:

您的绑定事件的关闭错误应为});

答案 6 :(得分:0)

<强> Demo  现在为时已晚。试试这个

$('.item').on('click', function(event){ 
    ($(this).index()==1)?alert("two"):alert("not two")
});