jQuery HTML 锚标记渐进增强

发布于 2024-10-14 05:06:32 字数 984 浏览 7 评论 0原文

我编写了 jQuery,它应该找到特定的 标签并更改其行为。在 jQuery 加载之前, 标记具有指向另一个页面的 href 属性。我正在使用 jQuery 来更改 标记的行为,这样它就不会指示浏览器加载其他页面,而是在单击时运行 javascript,在 中动态加载内容

因此,例如,我有以下内容: <代码>

<a class="funk" href="http://example.com/page2.html">Link</a>
<div class="hidden bubble">Load this instead.</div>
The jQuery I have running does the following:
$(document).ready(function(){
        $('.bubble').hide()
        $('.bubble').removeClass('hidden');
        $('.funk').attr('href', '#');

    $('.funk').click(function(e){
        $('.bubble').show();
    })

})

我遇到的问题是:每当用户单击链接时,浏览器都会对 href="#" 属性进行操作,并将浏览器滚动到页面顶部。使我的网站最“正确”的方法是什么,以便浏览器根本不滚动,而只是执行我为单击事件编写的 jQuery 代码?

I have jQuery that I have written that is supposed to find a particular <a> tag and change its behavior. Before jQuery loads, the <a> tag has an href attribute that points to another page. I am using jQuery to change the behavior of the <a> tag so that rather than directing the browser to load that other page, it instead runs javascript when clicked that loads content dynamically in a <div> that is positioned at the location of the mouse pointer.

So, for example, I have the following:

<a class="funk" href="http://example.com/page2.html">Link</a>
<div class="hidden bubble">Load this instead.</div>


The jQuery I have running does the following:

$(document).ready(function(){
        $('.bubble').hide()
        $('.bubble').removeClass('hidden');
        $('.funk').attr('href', '#');

    $('.funk').click(function(e){
        $('.bubble').show();
    })

})

The problem I have is: Whenever the user clicks the link, the browser acts on the href="#" attribute and brings scrolls the browser to the top of the page. What is the most "correct" way to make my site so that the browser does not scroll at all, but instead merely executes the jQuery code that I have written for the click event?

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

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

发布评论

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

评论(3

如果没有你 2024-10-21 05:06:32

让“click”函数返回false。这会取消该事件,并且浏览器不会点击该链接。在这种情况下,您甚至可以让 href 属性保持其原始值。

$('.funk').click(function(e){
    $('.bubble').show();
    return false;
//--^
})

为了保存,您可以显式取消该事件:

e.preventDefault(); // no default action
e.stopPropagation(); // event doesn't bubble up or down in the DOM

Let the 'click' function return false. That cancels the event, and the browser doesn't follow the link. In this case, you can even let the href attribute at its original value.

$('.funk').click(function(e){
    $('.bubble').show();
    return false;
//--^
})

To be on the save side, you can explicitly cancel the event:

e.preventDefault(); // no default action
e.stopPropagation(); // event doesn't bubble up or down in the DOM
将军与妓 2024-10-21 05:06:32

将其添加到您的点击函数中:

$('.funk').click(function(e){
    e.preventDefault();
    e.stopPropagation();
    $('.bubble').show();
});

这将执行方法名称所暗示的操作。

Add this to your click function:

$('.funk').click(function(e){
    e.preventDefault();
    e.stopPropagation();
    $('.bubble').show();
});

This will do what is implied by the method names.

孤独岁月 2024-10-21 05:06:32

在点击处理程序中调用 e.preventDefault()
http://api.jquery.com/event.preventDefault/

Call e.preventDefault() in the click handler.
http://api.jquery.com/event.preventDefault/

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