当直接瞄准元素时,jQuery触发器的行为不符合预期



给定这个HTML

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

这个jquery

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

我希望我在//do stuff中的任何东西都执行。然而,事实并非如此。如果我直接点击元素,我将得到预期的行为。

我在trigger的文档中没有找到任何东西可以帮助我理解这是否是预期的行为。

谢谢。

您的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
});

对不起,我错了。看起来HTML中有一些重复的id。提醒自己…在发布之前一定要验证!

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

你的jQuery选择器错误;应该是:

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

希望有帮助!

编辑:感谢vzwick的演奏

最新更新