我可以触发单击 href 元素而不触发 href 链接吗?

发布于 2024-12-28 21:11:45 字数 484 浏览 0 评论 0原文

我有一段代码,有时需要由脚本触发,但我不希望它更改我页面上的 URL。 (它由于某些奇怪的原因弄乱了历史状态)

我需要触发的代码:

 $(".photos-bottom .albums #albums li").live("click", function() {
  // my action here
 });

 The code I use to trigger it:
 $(".photos-bottom .albums #albums li:first").trigger("click");     

要单击的链接,但是我刚刚注意到,它应该单击 li 并且 li 位于 href 内部,所以我不知道为什么它仍然点击它..

<a href="#/photos/1/album/42/" rel="address:/photos/1/album/42/">
<li id="42">

I have a piece of code that will sometimes need to be triggered by a script, but I don't want it to change the URL on my page. (it messes up the history state for some odd reason)

The code I need to trigger:

 $(".photos-bottom .albums #albums li").live("click", function() {
  // my action here
 });

 The code I use to trigger it:
 $(".photos-bottom .albums #albums li:first").trigger("click");     

The link to click, however I just noticed, it's suppose to click the li and the li is inside of the href so i don't know why it's still clicking it..

<a href="#/photos/1/album/42/" rel="address:/photos/1/album/42/">
<li id="42">

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

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

发布评论

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

评论(3

水染的天色ゝ 2025-01-04 21:11:45

尝试使用 triggerHandler() 代替: http://api.jquery.com/triggerHandler/< /a>

.triggerHandler() 方法的行为与 .trigger() 类似,但有以下例外:
.triggerHandler() 方法不会导致事件的默认行为发生(例如表单提交)...[省略]

否则使用 trigger()调用中的额外参数(请参阅http://api.jquery.com/trigger/ )并在你的处理程序中只需检查传递的参数即可。如果传递了参数,那么您将阻止默认链接操作。 .preventDefault()

(注意:我假设您的处理程序附加到 links 元素,而不是列表项,因为您无法将列表项包装到链接中)

try triggerHandler() instead: http://api.jquery.com/triggerHandler/

The .triggerHandler() method behaves similarly to .trigger(), with the following exceptions:
The .triggerHandler() method does not cause the default behavior of an event to occur (such as a form submission)... [omissis]

Otherwise use trigger() with an extraparameter in the call (see http://api.jquery.com/trigger/) and in your handler just check the arguments passed. If a parameter was passed then you will prevent the default link action with. <evt>.preventDefault()

(note: I assume you handler is attached to links element, not to the list item, since you cannot wrap a list item into a link)

梦屿孤独相伴 2025-01-04 21:11:45

我认为这是由 live() 引起的。这是因为事件向上冒泡到 并触发 上的点击事件。您可以使用 delegate() 或 on() (jQuery > 1.7) 将事件处理程序附加到 上,然后从函数返回 false 以阻止它触发重定向

您可以 与委托一起使用

 $(".photos-bottom .albums #albums a").delegate(".photos-bottom .albums #albums li", "click", function(e) {
  // my action here
     alert("hi");
     //return false so that you stop the immediate propagation of the event
     return false;
 });


 $(".photos-bottom .albums #albums li:first").trigger("click");  

Fiddle http://jsfiddle.net/3CQFK/

I think this is caused by live(). This is because the events bubble up to the <body> and triggers the click event on the <a>. You could use delegate() or on() (jQuery > 1.7) to attache the event handler on the <a> and then return false from the function to stop it from triggering the redirect

You could do

 $(".photos-bottom .albums #albums a").delegate(".photos-bottom .albums #albums li", "click", function(e) {
  // my action here
     alert("hi");
     //return false so that you stop the immediate propagation of the event
     return false;
 });


 $(".photos-bottom .albums #albums li:first").trigger("click");  

Fiddle working with delegate http://jsfiddle.net/3CQFK/

梦回梦里 2025-01-04 21:11:45

是的,这是一个正常的任务。您可以在回调收到的事件上调用一个函数,该函数会阻止浏览器的默认操作,称为 防止默认。你的代码是:

$(".photos-bottom .albums #albums li").live("click", function(event) {
    event.preventDefault();
    // your code here
    // ...
});

Yep, it's a normal task. There's a function you can call on the event which the callback receives which prevents the browser's default action, called preventDefault. Your code would be:

$(".photos-bottom .albums #albums li").live("click", function(event) {
    event.preventDefault();
    // your code here
    // ...
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文