获取锚点/哈希的索引

时间:2011-02-15 13:45:17

标签: javascript jquery hash indexing

我在这里自杀了。

当我输入index.html#about(或喜欢它并打开它)时,我想得到它的index(),并将其作为“slideNumber”插入到下面的脚本中。

标记

<div id="slideshow">
    <div id="frontpage">
    <div id="About">
    <div id="Contact">
</div>

的jQuery

$(window).bind('hashchange', function () { //detect hash change
    var hash = window.location.hash.slice(1); //hash to string (= "myanchor")
    $('.slideshow').cycle(slideNumber); //Slideshow-number
});

“#about”将为2,“#contact”将为3,依此类推。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

像这样简单的东西应该适用于页面加载:

if(window.location.hash != undefined) {
  var slideNumber = $(window.location.hash).index() + 1;
}

如果你在页面中导航,你可以进行绑定并在里面进行index()调用,这样当哈希值发生变化时,它会更新:

$(window).bind('hashchange', function () { //detect hash change
    var slideNumber = $(window.location.hash).index(); //slideNumber
    $('.slideshow').cycle(slideNumber); //Slideshow-number
});

答案 1 :(得分:1)

试一试

var slideNumber = $("div#" + window.location.hash.slice(1)).prevAll().length

答案 2 :(得分:0)

slides = {frontpage: 1, about: 2, contact: 3};
$('.slideshow').cycle(slides[hash]);

为了让它变得动态,你可以使用这样的东西,我想:

$('#slideshow>div').each(function(i) {
  if(this.id == hash) {
    $('.slideshow').cycle(i);
  }
}

$('.slideshow').cycle($('#slideshow>div').index(hash) + 1);