7

我是一个 jQuery 初学者,并且遇到了一种在页面上创建新元素的方法。我能够很好地创建元素。但是,其中一个属性(大小)默认为 20,尽管我明确指出它应该更大。这是一个 jQuery 错误,还是我错过了什么?属性对象中的其他属性(类型、自动对焦)工作正常。

我正在使用的代码是这样的:

$('<input>', {
  'type' : 'text',
  'size' : 50,
  'autofocus' : 'true'
});

我没有任何 CSS 文件。

当我使用 attr() 方法时,我可以设置大小。但我想知道,我不是唯一一个无法使用属性对象为元素设置 size 属性的人。我正在使用 jQuery 1.9.1。

任何答案将不胜感激。

4

3 回答 3

2

作为一种解决方法,您可以使用带有大写 S 的“Size”:

$('<input>', {
  'type' : 'text',
  'Size' : 50,
  'autofocus' : 'true'
});

http://jsfiddle.net/g9Hct/

于 2013-10-24T20:50:28.883 回答
2

使用.prop()功能:

$('<input>', {
  'type' : 'text',
  'autofocus' : 'true'
}).prop('size','50');

或者这个语法:

$('<input>', {
   'type': 'text',
    prop: {
        size: "50"
    },
   'autofocus': 'true'
})

jsFiddle 示例

这是发现时的旧错误报告以及为什么他们没有重新启用旧功能的解释。

于 2013-10-24T20:45:39.687 回答
0

有趣的。我不知道为什么会发生这种情况,只能假设这是您假设的 jQuery 错误。

您已经知道使用attr()设置大小,但作为参考,您可以在创建元素后直接调用它(在将其添加到页面或以任何其他方式影响它之前):

$('<input>', {
  'type' : 'text',
  'autofocus' : 'true'
}).attr('size', 50);

另一种方法是简单地在选择器中添加属性:

$('<input type="text" autofocus="true" size="50">');

两者的 JSFiddle 演示

于 2013-10-24T20:45:34.973 回答