2012-03-27 48 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"); 
相关问题