我已将其缩小到声明“position
”
$(document).ready(function(){
var sliders = new Array("#left","#middle","#right");
var links = new Array("#fLink","#sLink","#tLink");
$(".link").click(function(){
var position = $("#" + sliders[links.indexOf("#" + this.id)]).position().left();
alert(position);
$(".slider").animate({left:gap}, 1500);
});
});
答案 0 :(得分:5)
sliders
已经包含#
,您不希望在$()
内使用它时再次添加它,您最终会将"##left"
传递给选择器字符串另请注意,left
是一个值,而不是一个函数,因此后面没有()
。
所以:
var position = $("#" + sliders[links.indexOf("#" + this.id)]).position().left();
// Remove -------^^^^^^ and -------------------------------------------------^^
对于你正在做的事情,我不会使用一对数组,我会使用:
data-*
属性最后两个是微不足道的,但这是第一个如何工作:
$(document).ready(function () {
var sliders = {
"fLink": "#left",
"sLink": "#middle",
"tLink": "#right"
};
$(".link").click(function () {
var sliderSel = sliders[this.id];
if (sliderSel) {
var position = $(sliderSel).position().left;
alert(position);
$(".slider").animate({
left: gap
}, 1500);
}
});
});
旁注:gap
是否在您未显示的代码中的某处定义了?如果没有,你会想要这样做。