IE8不支持jQuery变量内部选择器?

时间:2012-12-19 09:55:09

标签: jquery internet-explorer-8

以下代码添加了上传字段的链接。对于每次新点击,它会向表单显示一个新的上传字段,最多为5个。Chrome等没有错误。

我想知道下面的行有什么问题,因为它似乎在其他浏览器上运行良好,但在IE8上它会抛出错误:Object doesn't support this action。你能建议替代代码吗?

<div id="edit-submitted-file1-ajax-wrapper" style="display: block;">
    //upload field here
</div>
<a id="addmore" href="#">[+] Add more</a>

<div id="edit-submitted-file2-ajax-wrapper" style="display: block;">
    //upload field here
</div>

<div id="edit-submitted-file3-ajax-wrapper" style="display: block;">
    //upload field here
</div>

first = $('.webform-client-form').find('div[id$="-ajax-wrapper"]').first();
        first.after('<a id="addmore" href=#>[+] Add more</a>');
        $('.webform-client-form').find('div[id$="-ajax-wrapper"]').each(function(){
            $(this).hide();
            first.show();
        });

var c = 0;
$('#addmore').bind('click', function(e) {
    //HERE BELOW IS THE LINE WITH ERROR
    item = $('#edit-submitted-file'+ c +'-ajax-wrapper');
    item.show();
    ++c;
    if (c == 5) {
        $('#addmore').hide();
        return false;
    }
});

2 个答案:

答案 0 :(得分:1)

更改此

item = $('#edit-submitted-file'+ c +'-ajax-wrapper');

到这个

var item = $('#edit-submitted-file'+ c +'-ajax-wrapper');

http://jsfiddle.net/fJ3EG/2/

答案 1 :(得分:0)

您之前可能在html中的某个地方使用了“item”这个词。将变量声明为var item,问题应该解决。

请参阅Stackoverflow上的这篇早期文章:

  

我的猜测是,您的网页上有一些名称或ID为“item”的内容,   因此IE会成为窗口的属性(...)

ie, javascript and 'item' as a variable name