首先让我说我是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语句出了问题?
答案 0 :(得分:1)
添加此项以检查您的代码...
alert($current_position + ', ' + bezoekers_info + ', ' + liniepad_info);
如果这些值符合预期,这应该可以解决问题:
if( ($current_position == bezoekers_info) || ($current_position == liniepad_info) ){...
答案 1 :(得分: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的真实文本值,你可以让它工作。不确定它是否正确编码,但至少它现在有用。