我正在尝试通过从add()方法返回的项目(使用get()方法获取)并向其添加click事件处理程序来使我添加到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);
},
看起来非常简单。我已经确认有一个具有相应类名的LI元素(例如jcarousel-item-1)但是它引用的this.list
对象(由jcarousel构造函数创建)根据IE9显示无效
知道如何解决这个问题吗?
谢谢!
答案 0 :(得分:0)
在进行了一些进一步的研究之后,我意识到我没有使用var item;
在函数之外声明项变量,就像我以为我一直在做的那样。这在IE的所有版本中修复了它。所以,让这对你们所有人都有一个教训(但是,尤其是我) - 宣布你的变量,孩子们!并喝你的Ovaltine。