2012-11-13 37 views
0
失敗

我試圖通過獲得該項目,使我添加到的jCarousel對象可點擊的項目從add()方法返回(它得到使用get()方法)和添加一個click事件處理它,就像這樣:get()方法中IE9

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,火狐等,但IE9告訴我,要退回產品的不是對象,所以ATTR()方法無效。

望着的jCarousel代碼,我看到這個GET方法:

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

看起來非常簡單。我已經確認有一個LI元素具有相應的類名稱(例如jcarousel-item-1),但即使是它引用的對象(由jcarousel構造函數創建),根據IE9似乎也是無效的。

任何想法如何解決這一問題?

謝謝!

回答

0

經過一些進一步的研究,我意識到我沒有像使用var item;那樣在函數外部聲明項變量,就像我以前一直在做的那樣。這固定在所有版本的IE中。所以,讓這是對大家的一個教訓(但是,尤其是我) - 宣佈你的變數,孩子們!喝你的奧瓦廷。