0

jQuery プラグイン「Owl Carousel」を使用していますが、javascript 変数をオプション値としてプラグインを初期化しようとすると、奇妙な問題が発生します。

基本的に私は以下を持っています:

// thumbnail_count is the number of images in the slider, 
// already calculated elsewhere

var thumbnail_breakpoints = '';
switch (thumbnail_count) {
    case 3:
        thumbnail_breakpoints = '[0, 1], [219, 2], [299, 3]';
        break;
    case 2:
        thumbnail_breakpoints = '[0, 1], [219, 2]';
        break;
    case 1:
        thumbnail_breakpoints = '[0, 1]';
        break;
}
jQuery(function($) {
    $('#itemslider-zoom').data('owlCarousel').reinit({
        itemsCustom: [thumbnail_breakpoints]
    });
});

これは機能せず、itemCustom の値が reinit 関数に正しく渡されません。ただし、itemCustom の値を手動で入力すると、必要に応じて完全に機能します。2 つの画像の場合

jQuery(function($) {
    $('#itemslider-zoom').data('owlCarousel').reinit({
        itemsCustom: [[0, 1], [219, 2]]
    });
});

これがなぜなのか、誰でも解決できますか?javascript デバッグを使用すると、thumbnail_breakpoints が確実に正しく設定されていることがわかります。また、switch case ステートメントを変更して、それぞれが必要な値で直接 jQuery 関数呼び出しを行うようにすると、正常に動作しますが、それはコードの大規模な複製です。

助けてくれてありがとう。

PSこれはprototypejs内にあるため、jQueryが非競合モードで呼び出される理由です。

4

2 に答える 2

1

2 次元配列を作成して直接渡します。

使用する

var thumbnail_breakpoints = [];
switch (thumbnail_count) {
    case 3:
        thumbnail_breakpoints = [[0, 1], [219, 2], [299, 3]];
        break;
    case 2:
        thumbnail_breakpoints = [[0, 1], [219, 2]];
        break;
    case 1:
        thumbnail_breakpoints = [[0, 1]];
        break;
}
jQuery(function($) {
    $('#itemslider-zoom').data('owlCarousel').reinit({itemsCustom: thumbnail_breakpoints});
});
于 2014-07-17T11:55:37.100 に答える
1

itemsCustom は配列の配列である必要がありますが、文字列の配列に設定しています:

itemsCustom: [thumbnail_breakpoints] = ['[0, 1], [219, 2]']

コードを変更して、thumbnail_breakpoints を 1 つまたは複数の配列として設定します。

var thumbnail_breakpoints = [];
switch (thumbnail_count) {
    case 3:
        thumbnail_breakpoints = [[0, 1], [219, 2], [299, 3]];
        break;
    case 2:
        thumbnail_breakpoints = [[0, 1], [219, 2]];
        break;
    case 1:
        thumbnail_breakpoints = [[0, 1]];
        break;
}
于 2014-07-17T11:56:50.693 に答える