jQuery UI ajax 选项卡 - 在选项卡内加载链接时请求成倍增加

发布于 2024-10-10 19:27:08 字数 695 浏览 3 评论 0原文

我正在使用 jQuery UI 选项卡,通过 ajax 加载选项卡内容。内容可能包含我想要在所选选项卡中加载的链接。为了实现这一点,我使用这段代码,

$("#tab-div").tabs({  
    load: function(event, ui) {
    $('a:not('.targetBlank'), ui.panel).live('click', function() {
        $(ui.panel).load(this.href);
        return false;
    });
});

我使用 live() ,以便初始加载后加载的链接也被覆盖。

现在,想象一下您有 2 个选项卡的情况。首先,用户位于 tab_a 中,其中包含链接。用户单击 tab_a 中的链接,它可以正常打开。然后,选择 tab_b,然后选择 tab_a,再次选择其中的链接。

所以那就是: tab_a ->链接内 -> tab_b-> tab_a-> 。

现在,第二次选择 tab_a 后,以及之后的链接中的链接,单击链接时会收到两个请求 如果我重复这个过程,一旦我点击 tab_a 中的链接,我就会收到三个请求,依此类推。

我不太了解这里发生的事情。

.targetBlank 类适用于不打算在选项卡中打开的链接。它不是特别相关,但我想如果它在某种程度上很重要的话我也会分享它。

I'm using jQuery UI tabs, loading the tab content via ajax. Content may contain links which I want to load within the selected tab. To achieve that, I use this code

$("#tab-div").tabs({  
    load: function(event, ui) {
    $('a:not('.targetBlank'), ui.panel).live('click', function() {
        $(ui.panel).load(this.href);
        return false;
    });
});

I use live() so that the links loaded after the initial load are also covered.

Now, imagine a situation where you have 2 tabs. First, the user is in tab_a, which contains links. The user clicks a link within tab_a and it opens fine. Then, tab_b is selected, then tab_a, and the link within again.

so that's: tab_a -> link within -> tab_b -> tab_a -> link within

Now after tab_a is selected for the second time, and the link within after that, I get two requests when link is clicked. If I repeat the process, once I click on link within tab_a, I'll get three requests and so on.

I can't quite get the grip on what's going on in here.

.targetBlank class is for links that are not intended to open within a tab. It's not particularly relevant, but I thought I'd share it as well, if it turns out to be important somehow.

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

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

发布评论

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

评论(1

夜夜流光相皎洁 2024-10-17 19:27:08

如果内容已绑定,则需要设置一个标志,或者在选项卡更改时取消绑定内容。

像 ui.panel.find('a').unbind() 之类的东西应该可以解决问题。确保将其放入选项卡更改回调中。

You need to set a flag if the content has already been bound, or unbind the content on tab change.

Something like ui.panel.find('a').unbind() should do the trick. Make sure you put it in the tab change callback.

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