jQuery创建具有属性差异的元素

Mic*_*oya 10 jquery

发现了一些东西,我正在研究一下为什么一种方式有效而另一种方式无效的煽动.看起来只是一个IE7的东西,但作为IE7,叹息,仍然需要在我工作的应用程序中的一些支持.

在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);
Run Code Online (Sandbox Code Playgroud)

这种方式不起作用

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

任何人都知道为什么只有一种方式在IE7中工作,但在IE8 +,FF,Chrome和Safari中都可以.

Ant*_*ist 26

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

注意:Internet Explorer不允许您创建输入或按钮元素并更改其类型; 您必须使用<input type="checkbox" />例如指定类型 .以下是对此的演示:

IE中不支持:

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

支持的解决方法:

$('<input type="text" />').attr({
    name: 'test'
}).appendTo("body");
Run Code Online (Sandbox Code Playgroud)


Jos*_*eph 5

根据 jQuery

注意:Internet Explorer 不允许您创建输入或按钮元素并更改其类型;您必须指定类型

这不起作用:

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

但这确实:

$('<input type="text" />').attr({
    name: 'test'
}).appendTo("body");
Run Code Online (Sandbox Code Playgroud)