【发布时间】:2015-12-12 01:15:55
【问题描述】:
我的一个页面上有标签。每个选项卡都加载动态内容:
HTML
<ul>
<li><a href="#tab-1">TAB 1</li>
<li><a href="#tab-2">TAB 2</li>
<li><a href="#tab-3">TAB 3</li>
</ul>
jQuery - onclick
$('li a').on('click', function(e) {
$('li a').removeClass('active');
$(this).addClass('active');
// Make Ajax call to get data to display...
});
此外,我正在处理浏览器的后退按钮。每次单击按钮并且 URL 中的选项卡哈希值发生变化时,都会激活相应的选项卡并检索其数据:
jQuery - onhashchange
$(window).on('hashchange', function() {
var hash = $.trim(window.location.hash);
var $link = $('li a[href="' + hash + '"]');
if ($link.length) {
$link.trigger('click'); // Pass the flow to onclick handler
}
});
后退按钮工作正常。问题在于,当单击选项卡时,两个 事件(onclick 和 onhashchange)都会被触发,这会导致 Ajax 调用两次。
如何防止onhashchange仅在标签被点击时?
【问题讨论】:
-
我认为这不是正确的方法。跟踪用户在 JS 中单击链接时的哈希值,在位置重定向之前将哈希值附加到 url,然后您可以从下一页的新 url 读取和解析。
标签: javascript jquery