0

add() メソッド (get() メソッドを使用して取得) から返されたアイテムを取得し、それにクリック イベント ハンドラーを追加することで、jcarousel オブジェクトに追加するアイテムをクリック可能にしようとしています。

for(n = 0; n < response.link_colors.length; n++) {
    item = carousel.add(n + 1, '<div style="background-color: ' + response.link_colors[n] + '; width: 75px; height: 75px;">&nbsp;</div>' );
    makeClickable(item, response.link_colors[n], 'linkcolor');
}

function makeClickable(item, selection, setting) {
    item.attr("sel", selection);

    item.click(function() { 
        eval("selections." + setting + " = $(this).attr('sel');");
        if(setting == 'layout') {
            $('#template_preview').show();
            $('#extracted_selections').show();
        }
        reloadFrame();
    }); 
}

これは、Chrome や Firefox などでは期待どおりに機能します。しかし、IE9 では、返されるアイテムはオブジェクトではないため、attr() メソッドは無効であると通知されます。

jCarousel コードを見ると、get メソッドについて次のように表示されます。

    get: function(i) {
        return $('>.jcarousel-item-' + i, this.list);
    },

かなり簡単に見えます。適切なクラス名 (jcarousel-item-1 など) を持つ LI 要素があることを確認しましたがthis.list、それが参照するオブジェクトでさえ、jcarousel コンストラクターによって作成され、IE9 によると無効であるように見えます。

これを修正する方法はありますか?

ありがとう!

4

1 に答える 1

0

var item;さらに調べてみると、思っていたように関数の外でitem変数を宣言していないことに気づきました。これにより、IEのすべてのバージョンで修正されました。だから、これをあなた方全員(特に私)への教訓にしましょう-あなたの変数を宣言してください、子供たち!そして、あなたのオバルチンを飲みます。

于 2012-11-14T00:22:03.900 に答える