(杰奎里)我想知道为什么这段代码不起作用

(JQuery) I'm wondering why this code doesn't work?

本文关键字:段代码 不起作用 代码 想知道 为什么      更新时间:2023-09-26

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

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是否在尚未显示的代码中的某个位置定义?如果没有,你会想要这样做。