2012-03-27 88 views
8

發現了一些東西,我正在調查一下爲什麼一種方式有效,另一種則不會。看起來是隻IE7的事情,但因爲IE7,嘆了口氣,仍然需要我工作的應用程序的一些支持。jQuery創建具有屬性差異的元素

方式,在IE7工作

var month = jQuery('<input/>'); 
month.attr('id', 'DOBmonth'); 
month.attr('title', 'Enter month'); 
month.attr('type', 'text'); 
month.attr('size', '1'); 
month.attr('maxlength', '2'); 
month.attr('class', 'numbersOnly'); 
month.attr('value', mm); 

這種方式行不通

var month = jQuery('<input/>', { 
     id: 'DOBmonth', 
     title: 'Enter month', 
     type: 'text', 
     size: 1, 
     maxlength: 2, 
     class: 'numbersOnly', 
     value: mm 
     }); 

任何人都有一個想法,爲什麼只有一種方式在IE7的作品,但無論是在IE8 +,FF,Chrome和Safari罰款。

+2

你使用IE7第二種方式獲取JavaScript錯誤? – 2012-03-27 22:11:00

+0

IE7和更早版本在'input'元素上有一個針對'type'的寫一次性策略(一旦你設置了它,你就不能改變它)。猜測(因此沒有發佈答案),無論出於何種原因,第一個例子與該政策相反,第二個例子不是。再次,不是*答案*,但也許是一些見解。 – 2012-03-27 22:17:35

+0

也應該在IE – PHearst 2013-03-21 09:43:36

回答

21

答案可以在jQuery()函數本身的API中找到。

注意:Internet Explorer不允許您創建輸入或按鈕元素並更改其類型;例如,您必須使用 <input type="checkbox" />來指定類型。這方面的一個演示可以 在下面看到:

不支持在IE中:

$('<input />', { 
    type: 'text', 
    name: 'test' 
}).appendTo("body"); 

支持解決方法:

$('<input type="text" />').attr({ 
    name: 'test' 
}).appendTo("body"); 
+0

Aww的引號中。感謝您的鏈接。我錯過了最初閱讀它的那部分內容。 – 2012-03-28 01:02:06

3

according to jQuery

注:Internet Explorer將不允許你創建一個輸入或按鈕元素並更改其類型;你必須指定

這不起作用類型:

$('<input />', { 
    type: 'text', 
    name: 'test' 
}).appendTo("body"); 

但確實:

$('<input type="text" />').attr({ 
    name: 'test' 
}).appendTo("body"); 
相關問題