jQuery UI ajax 选项卡 - 在选项卡内加载链接时请求成倍增加
我正在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果内容已绑定,则需要设置一个标志,或者在选项卡更改时取消绑定内容。
像 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.