0

请参阅我在此处创建的 jsfiddle 演示,我正在尝试为我当前客户的网站添加深度链接功能。

我需要有关以下要求的帮助:

我的简单点击 toggleClass 代码:

$("div.contentBox").click(function () {

    var $this = $(this);
    // don't proceed if already selected
    var $previousSelected = $('.selected');
    if ( !$this.hasClass('selected') ) {
        $this.addClass('selected');
    }

    $previousSelected.removeClass('selected');  
});



(1) 会有很多重复<div class='contentBox'>,每一个都有不同的属性值title=''

$("div.contentBox").click()(2) 通过从 中添加值触发事件title='',将产生类似http://site.com/index.html#content01-about-us的内容。注意:请提供示例编码如何实现这一点。

(3)通过<div>block而不是触发事件的原因是容器内部有<a>额外的标签,最终会形成嵌套链接,这是不允许的。<a>class='contentBox'<a>

(4)$("div.contentBox").click()也将 toggleClass 'selected'

(5) 从链接返回,例如http://site.com/index.html#content01-about-us,页面加载将足够智能以获取<div class='contentBox' title='content01-about-us>addClass/toggle 类'selected'

我花了数周时间解决这个问题,但无济于事,在这里迫切需要帮助。如果这里有人能按照要求更新上述 jsfiddle演示,那将是最好的。

我自己进行了一些研究,遇到了history.jsaddress.jsBBQ 插件,但无法让它工作



提前感谢

4

1 回答 1

1

你需要这样的东西:

$("div.contentBox").click(function () {

var $this = $(this);
// don't proceed if already selected
var $previousSelected = $('.selected');
if ( !$this.hasClass('selected') ) {
    $this.addClass('selected');
}
$previousSelected.removeClass('selected');  

if(location.href.indexOf('#') == -1)
  location.href += "#" + $(this).prop("title");
else
  location.href = location.href.split('#')[0] + "#" + $(this).prop("title");
alert(location.href);
});

对于第二个要求:

$(document).ready(function() {
  if(location.href.indexOf('#') != -1){
    var page = location.href.split('#')[1];
    $("div[title*=" + page + "]").addClass('selected');
  }
});
于 2013-02-21T07:24:38.993 回答