Получить индекс привязки / хэша - PullRequest
0 голосов
/ 15 февраля 2011

Я убиваю себя здесь.

Когда я набираю 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 ]

1 голос
/ 15 февраля 2011

Что-то простое должно работать при загрузке страницы:

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 голос
/ 15 февраля 2011

Попробуй

var slideNumber = $("div#" + window.location.hash.slice(1)).prevAll().length
0 голосов
/ 15 февраля 2011
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...