使用返回相同HTML对象的不同选择器调用相同的处理程序

时间:2011-09-07 09:45:00

标签: jquery html

事件处理程序是否绑定到元素,因此您可以使用不同的选择器触发事件​​?看下面的例子,看看我想知道的是什么:

例:
HTML

<ul id="itemsList">
<li class="items" id="item1">element1</li>
<li class="items" id="item2">element2</li>
<li class="items" id="item3">element3</li>
</ul>

定义了click事件处理程序的Javascript:

$('.items').click(function(){
    //do something
});

要调用此处理程序,我认为可以使用不同的选择器以多种方式执行,因此$('#item1').click();$(#itemsList li).eq(1).click();将调用相同的事件处理程序。对吗?
如果是的话我肯定做错了,因为它不能正常工作......

3 个答案:

答案 0 :(得分:0)

调用不带参数的.click()或.trigger('click')应该在选择器的结果上调用click事件处理程序。正如pinouchon指出要小心你的选择器语法,在适当的地方使用引号并记住.eq()是零索引的,这意味着.eq(1)将选择第二个li元素。

最终,要调用事件处理程序,我认为你想要的是:

$('#itemsList li').eq(0).click();

或者确实,

$('#item1').click();

答案 1 :(得分:0)

我有几点要指出:

  • 请勿忘记"
  • 中的$(#itemsList li).eq(1).click();
  • .eq(1)实际上选择了第二个li,因为eq index从0开始。

正确的语法:

// define handler
$('.items').click(function(){
    alert($(this).text() + " clicked");
});

// call handler
$('#item1').click() ;

$("#itemsList li").eq(0).click();

jsFiddle demo

答案 2 :(得分:0)

你已经做的事情调用了这个处理程序: http://jsfiddle.net/a3tNM/

$('#item1').click();$(#itemsList li).eq(1).click();不会调用相同的处理程序。它会创建一个新的。