-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、これは関数ではなく値であるため、()その後は no であることに注意してください。

そう:

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

あなたがしていることのために、私は配列のペアを使用しません。

  1. ルックアップ オブジェクト、または
  2. 命名規則、または
  3. data-*属性_

最後の 2 つは簡単ですが、最初の 1 つは次のように機能します。

$(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 に答える