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;"> </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 によると無効であるように見えます。
これを修正する方法はありますか?
ありがとう!