-3

我已将其缩小到声明 ' 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);

        });

});
4

1 回答 1

5

sliders里面已经有了#,你不想在里面使用它时再次添加它$(),你最终"##left"会作为选择器字符串传入。另请注意,这left是一个值,而不是一个函数,所以()在它之后没有。

所以:

var position = $("#" + sliders[links.indexOf("#" + this.id)]).position().left();
// Remove -------^^^^^^ and -------------------------------------------------^^

对于你正在做的事情,我不会使用一对数组,我会使用:

  1. 查找对象,或
  2. 命名约定,或
  3. 一个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在您未显示的代码中的某处定义?如果没有,你会想要这样做。

于 2013-09-11T08:47:09.553 回答