直接定位元素时,jQuery 触发器未按预期运行

发布于 2024-12-10 14:02:41 字数 393 浏览 0 评论 0原文

给定这个 HTML

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

和这个 jquery,

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

我希望 // do stuff 中的任何内容都能执行。然而,事实并非如此。如果我直接单击该元素,我会得到预期的行为。

我在触发器文档中发现的任何内容都无法帮助我了解这是否是预期的行为。

谢谢。

Given this HTML

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

And this jquery

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

I would expect whatever i have in // do stuff to execute. However, it doesn't. If I click directly on the element I get the expected behavior.

Nothing I've found in the documentation for trigger helps me understand if this is expected behavior.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七秒鱼° 2024-12-17 14:02:41

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

You don't have any #section id in your HTML, you have #section-name. For // do stuff to execute, change your HTML to this:

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

Or with HTML5, do the following:

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

And then change your event listener to the following (notice the lack of the #):

$("section div").click(function(){
    // do stuff
});
故事与诗 2024-12-17 14:02:41

抱歉,我的错误。 HTML 中似乎存在一些重复的 ID。自我提醒...在发布之前务必进行验证!

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

Sorry, my mistake. It seems that there were some duplicate IDs in the HTML. Note to self... always validate before posting!

Maybe this will help someone else with a similar lack of discipline. :)

小瓶盖 2024-12-17 14:02:41

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

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

希望有帮助!

编辑:感谢 vzwick 的这个 fiddle

Your jQuery Selector is wrong; it should be:

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

Hope it helps!

EDIT: Thank you to vzwick for this fiddle.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文