直接定位元素时,jQuery触发器的行为不符合预期

时间:2011-10-17 23:39:19

标签: jquery triggers

鉴于此HTML

<div id="section-name">
    <div id="item">
    ...
    </div>
</div>

这个jquery

$("#section-name div").click(function(){
    // do stuff
});
$("#item").trigger("click");

我希望无论我在//做什么都可以执行。但事实并非如此。如果我直接点击元素,我会得到预期的行为。

我在触发器的文档中找不到任何内容,这有助于我理解这是否是预期的行为。

感谢。

3 个答案:

答案 0 :(得分:0)

你的jQuery Selector错了;它应该是:

$("#section-name div").click(function(){
    // do stuff
});
$("#item").trigger("click");

希望它有所帮助!

编辑:感谢vzwick的fiddle

答案 1 :(得分:0)

您的HTML中没有任何#section个ID,您有#section-name。要执行// do stuff,请将HTML更改为:

<div id="section">
    <div id="item">
    ...
    </div>
</div>

或者使用HTML5,请执行以下操作:

<section>
    <div id="item">
    ...
    </div>
</section>

然后将您的事件监听器更改为以下内容(请注意缺少#):

$("section div").click(function(){
    // do stuff
});

答案 2 :(得分:0)

抱歉,我的错误。似乎HTML中有一些重复的ID。注意自己......在发布前总是验证!

也许这会帮助其他类似缺乏纪律的人。 :)