0

だから私は次のHTMLを持っています:

<ul id="nav">
    <li><a href="somepage1.php" class="class1">Link1</a></li>
    <li><a href="somepage2.php" class="class2">Link2</a></li>
</ul>

jquery関数:

(function($) {
    var imgList = [];
    $.extend({
        preload: function(imgArr, option) {
            var setting = $.extend({
                init: function(loaded, total) {},
                loaded: function(img, loaded, total) {},
                loaded_all: function(loaded, total) {}
            }, option);
            var total = imgArr.length;
            var loaded = 0;

            setting.init(0, total);
            for(var i in imgArr) {
                imgList.push($("<img />")
                    .attr("src", imgArr[i])
                    .load(function() {
                        loaded++;
                        setting.loaded(this, loaded, total);
                        if(loaded == total) {
                            setting.loaded_all(loaded, total);
                        }
                    })
                );
            }

        }
    });
})(jQuery);

およびドキュメントレディトリガー(簡略化):

$.preload([
    'path/to/image.jpg',
    'path/to/image2.jpg',
    'path/to/image3.jpg',
    'path/to/image4.jpg',
]);

それは本当にうまく機能しますが、私はそれを強化する必要があります。ユーザーがクラス「class1」のアンカーをクリックすると、プリローダーは特定の配列に割り当てられた画像を読み取る必要があります。そして、私は「$.preload」を一度だけ書く必要があるでしょう。

したがって、私のアイデアは、次のような2つの異なる配列を作成することでした。

var arraysClass1 = [
    'path/to/image.jpg',
    'path/to/image2.jpg',
    'path/to/image3.jpg',
    'path/to/image4.jpg'
];

var arraysClass2 = [
    'path/to/image5.jpg',
    'path/to/image6.jpg',
    'path/to/image7.jpg',
    'path/to/image8.jpg'
];

次に、次のようなドキュメント準備イベントを作成します。私はここで立ち往生していて、以下のコードにエラーがあります

$('#nav a').live("click", (function(event){
    event.preventDefault();
    var getClass = '.'+$(this).attr("class");
    $(function() {
        $.preload([
            if(getClass=='.class1'){
                arrayClass1;
            }
            elseif(getClass=='.class2'){
                arrayClass2;
            }

        ]);
    });

$ .preload([...]);内に「IF」ロジックを作成する方法がわかりません。

4

2 に答える 2

0

これがあなたが探していることをするコードのブロックです:

$('#nav a').live("click", function(event){
    event.preventDefault();
    usearr='';
    if ($(this).attr("class")=="class1") {
        usearr=arraysClass1;
    } else if ($(this).attr("class")=="class2") {
        usearr=arraysClass2;
    }
    $.preload(usearr);
});
于 2012-05-11T12:34:27.520 に答える
0

次のように、$。preload([])の外にある適切なオブジェクトを見つけてはいけません。

$('#nav a').live("click", (function(event){
    event.preventDefault();
    var getClass = '.'+$(this).attr("class");
    var targetObj ;
     if(getClass=='.class1'){
                targetObj = arrayClass1;
     }
     else if(getClass=='.class2'){
                targetObj = arrayClass2;
     }  
        $.preload(targetObj);
});

$(function())クリックコールバック内に別のものは必要ありません。

于 2012-05-11T12:29:12.360 に答える