scrollTo () не прокручивается после вкладок ('select', #) - PullRequest
2 голосов
/ 14 декабря 2011

Я схожу с ума, это должно быть просто, и я уверен, что я слишком усложнил это, как jQuery noob.Вздох.

Итак, у меня есть эта страница, которая принимает # switchto = ac # goto = acemergency hashtags и соответствующим образом переключает вкладки jQuery, после чего она должна перейти (перейти к) к нужному идентификатору.Проблема в том, что tabs () автоматически прокручивает обратно к началу контейнера, и когда вызывается scrollTo (), он больше не знает, где прокручивать.Другими словами, он вообще не прокручивается.

Вот мой обработчик событий:

jQuery(window).hashchange(function(e) {
    if (window.location.hash) {
        var hash = window.location.hash.substring(1); //Puts hash in variable, and removes the # character
        var instruct = hash.split('#'); //split instructions
        var whichtab = instruct[0].split('='); // split instruction from tab name

        try {
            var whichid = instruct[1].split('='); // split instruction from id name
        }
        catch (err) { /*suppress*/
        }

        if (whichtab[0] == "switchto") {
            switch (whichtab[1]) {
                case 'ac':
                    try {
                        if (whichid[1] != "") {
                            $s.when(targettab(0)).then(targetid(whichid[1]));
                        }
                    } catch (err) {}
                    $s('.tour').tabs('select', 0);
                    break;
                case 'heating':
                    try {
                        if (whichid[1] != "") {
                            $s.when(targettab(1)).then(targetid(whichid[1]));
                        }
                    } catch (err) {}
                    $s('.tour').tabs('select', 1);
                    break;
                case 'plumbing':
                    try {
                        if (whichid[1] != "") {
                            $s.when(targettab(2)).then(targetid(whichid[1]));
                        }
                    } catch (err) {}
                    $s('.tour').tabs('select', 2);
                    break;
            }
        }
    }
});

А вот мои функции:

function targetid(givenid) {
    //$s('html,body').animate({scrollTop: $s("#"+givenid).offset().top},'fast');
    $s.scrollTo($s("#" + givenid), 400);
    $s("#" + givenid).delay(500).fadeTo('slow', 0.1, function() {
        $s("#" + givenid).fadeTo('slow', 1);
        console.log('got ' + givenid + ' and scrolled to it');
    });
}

function targettab(giventab) {
    $s('.tour').tabs('select', giventab);
}

Я попробовал несколько способов.Я нашел здесь на stackoverflow, но ни один из них, кажется, не решить мою проблему.Есть идеи?Есть ли способ остановить прокрутку tabs () обратно до вершины на вкладке?

1 Ответ

0 голосов
/ 15 декабря 2011

Я не особо внимательно изучил ваш код, но разве вы не имеете в виду scrollTop, а не scrollTo? Предполагая, что $ s является вашим объектом jQuery, что происходит, когда вы пытаетесь:

$s("#" + givenid).scrollTop(400);

Это также предполагает, что $ s ("#" + Givenid) является правильным селектором для контейнера, который вы хотите прокрутить.

Я мог бы быть здесь (опять же, не выглядел так уж сложно), но я надеюсь, что это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...