- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我设置了一个 hashchange 函数来显示/隐藏关于页面的不同部分,而无需 7 个单独的页面。这一切都很好,事实上,只有一件小事困扰着我,当相关内容显示在屏幕上时,例如:#about01
如果您再次单击菜单按钮,浏览器将跳转到这个 div 的顶部,我不想发生这种情况。
这是我的 jQuery:
jQuery(document).ready(function(){
jQuery(window).on('hashchange', function(){
var hashFound = determineContent();
if(hashFound) return false;
});
function determineContent(){
var hash = window.location.hash;
jQuery('.about').hide();
jQuery('.sub-menu').each(function(){
if (jQuery(this).attr('hook') === hash.replace('#about', '')) {
jQuery('#about'+jQuery(this).attr('hook')).fadeIn();
return true;
}
});
jQuery('html, body').animate({scrollTop:0}, 'slow');
return false;
}
determineContent();
});
HTML:
<div id="sub-menu">
<li id="sub-menu-01" class="sub-menu" hook="01"><a href="#about01">TEST</a></li>
<li id="sub-menu-02" class="sub-menu" hook="02"><a href="#about02">TEST</a></li>
<li id="sub-menu-03" class="sub-menu" hook="03"><a href="#about03">TEST</a></li>
<li id="sub-menu-04" class="sub-menu" hook="04"><a href="#about04">TEST</a></li>
<li id="sub-menu-05" class="sub-menu" hook="05"><a href="#about05">TEST</a></li>
<li id="sub-menu-06" class="sub-menu" hook="06"><a href="#about06">TEST</a></li>
<li id="sub-menu-07" class="sub-menu" hook="07"><a href="#about07">TEST</a></li>
</div>
<div id="about01" class="about">CONTENT HERE
</div>
<div id="about02" class="about">CONTENT HERE
</div>
<div id="about03" class="about">CONTENT HERE
</div>
<div id="about04" class="about">CONTENT HERE
</div>
<div id="about05" class="about">CONTENT HERE
</div>
<div id="about06" class="about">CONTENT HERE
</div>
<div id="about07" class="about">CONTENT HERE
</div>
就像我说的,如果显示了#about01
,然后用户再次点击#sub-menu-01
,窗口会向下滚动到这个窗口的顶部div,这是 url 中散列的正常行为。是否有一种方法可以防止默认行为并且不会在单击时滚动到此 div 的顶部?
另外,我想弄清楚是否有一种方法可以在 www.website.com/about
的页面加载时显示 #about01
而不必放入 www.website.com/about/#about01
等等?
最佳答案
问题出在你的 jquery.each block 中。
jquery.each block 中的“return true”不会返回,而是继续下一个元素。此外,这不会从您的 determineContent 函数返回,因此下一个滚动代码也将被执行并且 determineContent 将始终返回 false。
使用标志,例如
var found = false;
JQuery.each(function(){
if(found) return;
//if your condition is true then found = true
})
if(found) return true;
//else continue the next line.
关于jquery: hashchange,防止跳转到hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15950258/
我正在尝试在 ReactJS 中为我的页面添加一个事件监听器。我已将它添加到 componentDidMount()。但是 仅在初始页面加载时触发。 本地址栏发生变化时,如何让它触发。 compo
我有以下代码 console.info('checking if url contains hash'); if (!location.hash) { console.warn('if-block
我正在尝试在 ReactJS 中为我的页面添加一个事件监听器。我已将它添加到 componentDidMount()。但是 仅在初始页面加载时触发。 本地址栏发生变化时,如何让它触发。 compo
我设置了一个 hashchange 函数来显示/隐藏关于页面的不同部分,而无需 7 个单独的页面。这一切都很好,事实上,只有一件小事困扰着我,当相关内容显示在屏幕上时,例如:#about01 如果您再
1 - WebKit 的正确语法是什么(主要用于 iPad 上的 Safari,如果它适用于 Win Chrome 则很好)到 .addEventListener至hashChange事件? 2 -
我有一个页面,其中有一些链接指向绑定(bind)到 hashchange 事件的 anchor 和事件处理程序: Link $(window).on('hashchange', functi
我在使用 jQuery 和将动画包装在 hashchange 事件中时遇到问题。当事件被触发时,动画立即发生。我需要它是光滑的。 jQuery( document ).ready(functi
我使用以下示例进行哈希更改: $(window).trigger('hashchange'); $('.navBtn').bind('hashchange',function(){ var h
我有一个表单,可以在成功提交后将哈希 URL 添加到我的域 ( http://domain.com/#addedhash ) 我希望表单在添加哈希链接后向其自身添加一个类。 我有这段代码,但由于某种原
我做了一个 jQuery 的东西; with 将加载内容而不刷新页面。其代码是: $(document).ready(function(){ // initial $('#content').load
我什至不知道我应该怎么称呼这个问题……这个问题的标题根本没有任何意义,我知道! 以下案例:我有一个单页布局,用户可以向下滚动。我有 .layer 部分,当在视口(viewport)内时,应该将地址栏中
我在基于 URL 散列中的值的 jQuery 多选控件中显示“选择”的项目。例如, http://localhost/index#options=2,3,4 根据 url hashQuery 在多选控
overlay.onclick = function(e){ e.preventDefault(); window.location.hash = 'overlay'; var
在我的网页上,我有多个独立的插件(找不到更好的词),它们都与浏览器的 location.hash 交互。 (我有一些代码可以让他们的工作分开,但这与这个问题无关。)例如,我有: // file1.js
我在让 hashchange 函数按我希望的方式工作时遇到了一些问题。我目前有一个 div 的砌体网格,每行(4 行)后都有一个清除 div,这是隐藏的。单击其中一个 div 会显示最近的清除 div
我正在尝试根据哈希字符串中的函数名称来调用函数。我有以下代码: $(window).on('hashchange', function() { //alert(location.hash.subs
我的应用程序中有以下代码: $(window).hashchange( function(){ console.log('hashchange event'); var hash =
我的页面上有一些 div,默认情况下是隐藏的。可以通过链接(例如“#job8”)选择工作。我正在尝试在我的脚本中使用 hashchange 来检查特定哈希的 URL,然后显示适当的 div。 这是一个
我有一个 AngularJS Web 应用程序,其中没有单独的页面。 我已经设置了一个目标完成,以便有一个由 javascript 事件触发的代码, 它具有以下结构: function call_co
我同时使用了 jquery hashchange 和 window.addEventListener("hashchange"),但是当代码删除哈希部分时,该事件不会触发。我正在使用 mithril.
我是一名优秀的程序员,十分优秀!