事件处理程序是否绑定到元素,因此您可以使用不同的选择器触发事件?看下面的例子,看看我想知道的是什么:
例:
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();
将调用相同的事件处理程序。对吗?
如果是的话我肯定做错了,因为它不能正常工作......
答案 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();
答案 2 :(得分:0)
你已经做的事情调用了这个处理程序: http://jsfiddle.net/a3tNM/
$('#item1').click();
和$(#itemsList li).eq(1).click();
不会调用相同的处理程序。它会创建一个新的。