.append导致IE错误

时间:2012-02-10 15:51:42

标签: jquery append

我有以下代码,在FF中工作正常,但.append()函数在IE中发生错误。是否有人能够告诉我我的代码是否有任何问题,或者这是否是IE问题?

目的是为表单添加隐藏字段(根据用户点击的内容而不同),然后我提交表单。

$(function(){

    $('a.js-make-profile-image').click(function(){
        $('.append-here').append('<input type="hidden" name="action-type" value="profile-image" />');
        document.forms['attachment-action-form'].submit();
    });

});

IE调试器发出错误Unexpected call to method or property access,调试器在{jQuery-j}中突出显示了这个文本。{/ 1}}。

2 个答案:

答案 0 :(得分:5)

1)你有一个额外的;

$('a.js-make-profile-image').click(function(){;

在这一行的末尾。
如果这不能解决您的问题,请使用IE报告的错误更新您的问题

2)我认为由于name属性的价值,您也可能会发生冲突。

您同时拥有type属性和name="type"
既然您通常也可以通过 <element>.<name> 访问DOM元素,那么<input>.type应该返回什么?元素type属性值或对DOM的输入元素的引用?

因此请尝试更改name属性值

3)如果没有任何改变,只是尝试更改代码

$('.append-here').append('<input type="hidden" name="type" 
                           value="profile-image" />');

$('<input />').attr({
    "type"  : "hidden",
    "name"  : "action-type",
    "value" : "profile-image"
}).appendTo($('.append-here'));

并且,正如您所发现的,请确保元素append-here不是空元素。

答案 1 :(得分:2)

我可以复制此错误的唯一方法是使用IE8并将隐藏字段附加到像图像标记一样愚蠢的东西。

你能检查'.append-here'是否为div?如果你可以粘贴那些有帮助的html以及它失败的哪个版本的IE?