1

首先让我说我是 jQuery 的一个完整的新手,我很难解决我当前的问题。我目前正在开发一个使用 jQuery ScrollTo 插件的项目。我正在尝试根据我在网页上的当前位置更改 scrollTo 函数的轴。

$(document).ready(function() {
var $current_position = thuis;
var $axis = 'xy';

$('.box').stop().scrollTo(thuis, 0);

$(window).resize(function() {
    $('.box').stop().scrollTo($current_position, 0);
}); 

// Scroll function
$('.toc a').click(function() {
    var $target = $(this.hash);
    if($current_position == bezoekers_info || liniepad_info){
        $axis = 'xy';
        alert("xy");
    } else {
        $axis = 'yx';
        alert("yx");
    }
    $('.box').stop().scrollTo($target, 1000, { queue:true, axis: $axis }, {easing: "easeInOutQuart"});
    $current_position = $target;
    return false;
});
});

该功能基本上可以工作,但它不会改变轴值(它将保持在'xy')。无论我的位置是什么,它总是会用“xy”提醒我。但是我知道 $current_position 应该可以工作,因为它确实可以在 window.resize 函数中工作。如果我将顶部的 $axis var 更改为 'yx' 它也可以工作。

我在这里错过了什么,显然我的 if / else 语句做错了什么?

4

2 回答 2

1

添加此以检查您的代码...

alert($current_position + ', ' + bezoekers_info + ', ' + liniepad_info);

如果这些值符合预期,这应该可以解决问题:

if( ($current_position == bezoekers_info) || ($current_position == liniepad_info) ){...
于 2013-08-01T19:42:10.247 回答
1

我设法用这个来修复它:

        var $target = $(this.hash);
        if( (this.hash.substr(1) == "bezoekers_info") || (this.hash.substr(1) == "liniepad_info") ){
            $axis = 'yx';
        } else {
            $axis = 'xy'
        }

显然,如果您检查 this.hash 的真实文本值,您可以让它工作。虽然不确定它是否正确编码,但至少它现在可以工作。

于 2013-08-02T15:29:33.160 回答