不跳转到锚点标签的情况下使用.hashchange?

3
我正在使用Ben Alman的Hashchange插件,成功地将指定div的类别进行切换。
但是我无法弄清楚如何停止跳转到锚点标签。我希望它停留在用户当前滚动位置。
以下是我的代码...
$(window).hashchange( function(){
$(function(){
$('.eventselected').removeClass('eventselected');
$(location.hash).addClass('eventselected');

});
});

$(window).trigger( 'hashchange' );

情况是,当用户从外部链接访问页面或在父页面上点击链接时,我希望添加类。只是不想跳转!

链接的类是.side-eventmore

我尝试使用以下代码进行修订...但仍然无法正常工作...

$( ".side-eventmore" ).click(function(e) {
e.preventDefault();
var hash = $(this).attr("href").replace('events.cfm', '') || 'blank';
document.location.hash = hash;  
});

$(window).hashchange( function(ev){
ev.preventDefault();
$(function(){
$('.eventselected').removeClass('eventselected');
$(location.hash).addClass('eventselected');
});

});

$(window).trigger( 'hashchange' );
1个回答

2

好的,弄清楚了。

我最终不得不手动更改每个受影响的 div 的 ID,将其改为井号加上“-id”,但保留链接只使用井号而不是加上“-id”。

<div id="#hash-id"></div>
<a href="#hash">link</a>

然后在代码中,我只将新类应用于 #hash-id ... 就像这样...

$(window).hashchange( function(){

var selectid = location.hash;
selectid += '-id';

$(function(){
$('.eventselected').removeClass('eventselected');
$(selectid).addClass('eventselected');
});

});

$(window).trigger( 'hashchange' );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接