IE9中jCarousel中的get()方法失败

时间:2012-11-13 00:54:00

标签: jquery jquery-plugins jcarousel

我正在尝试通过从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;">&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);
    },

看起来非常简单。我已经确认有一个具有相应类名的LI元素(例如jcarousel-item-1)但是它引用的this.list对象(由jcarousel构造函数创建)根据IE9显示无效

知道如何解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

在进行了一些进一步的研究之后,我意识到我没有使用var item;在函数之外声明项变量,就像我以为我一直在做的那样。这在IE的所有版本中修复了它。所以,让这对你们所有人都有一个教训(但是,尤其是我) - 宣布你的变量,孩子们!并喝你的Ovaltine。