2012-02-10 44 views
2

我有以下代碼,它在FF中正常工作,但.append()函數在IE中注意錯誤。有人能夠告訴我,如果我的代碼有什麼問題,或者這是一個IE問題?.append導致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在突出顯示 - this.nodeType===1&&this.appendChild(a)

+0

你應該有點擊後的額外分號(function(){; <--- – 2012-02-10 15:53:15

+1

你得到的錯誤信息是什麼? – Guffa 2012-02-10 15:53:48

+0

它看起來應該可以工作,我知道IE可以有問題,如果如果你只是嘗試.append(「測試」)它是否工作?哪些線路導致你的問題? – 2012-02-10 15:54:36

回答

5

1)你有一個額外;

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

在此行的末尾。
如果這不能解決您的問題,請更新您的問題,並報告錯誤IE

2)我想你也可能因爲你的name屬性的值而產生衝突。

您同時擁有type屬性和name="type"
,因爲你可以平時還可以通過<element>.<name>究竟<input>.type應該返回訪問DOM元素?將元素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')); 

,正如你發現的,請確保元素不是一個空元素。

+0

好點,但可悲的是沒有引起問題。至於消息 - 對方法或屬性訪問的意外調用(並且此調試器在jQuery中突出顯示此文本 - this.nodeType === 1 && this.appendChild(a)')。 – 2012-02-10 16:16:14

+0

@DavidGard更新回答 – fcalderan 2012-02-10 16:38:35

+0

好的想法,我已經將「type」更改爲「action-type」,但我仍然收到相同的錯誤。 – 2012-02-10 16:55:48

2

我可以複製這個錯誤的唯一方法是使用IE8並將隱藏的字段添加到像圖片標籤那樣的東西。

你能否檢查'.append-here'是一個div?如果你可以粘貼可以幫助的HTML和哪個版本的IE瀏覽器失敗?

+0

這不是我試圖追加的div,我不知道它必須是。問題現在已經解決了。謝謝。 – 2012-02-13 10:45:53