jQuery意外地返回undefined

时间:2011-07-29 03:28:47

标签: jquery

jsfiddle链接是http://jsfiddle.net/PrfZy/1/

代码是:

$button = $('<button />', { text: "Some text.", name: "myButton"});
alert($button.attr("name"));
alert($button.attr("text"));

为什么第二个警报“未定义”?

2 个答案:

答案 0 :(得分:2)

text不是attr,因此如果您将该行更改为此alert($button.text());,您将获得预期结果。

答案 1 :(得分:2)

<button>的有效属性为nametypevaluedisabled(实际上属于属性,应设置和访问通过prop())。

您可以使用属性设置器创建自定义属性(不会验证):

$button = $('<button />').attr('text','Some text.').attr('name','myButton');
alert($button.attr('name'));
alert($button.attr("text"));

http://jsfiddle.net/AlienWebguy/PrfZy/2/

有效语法如下:

$button = $('<button />').text('Some text.').attr('name','myButton');
alert($button.attr('name'));
alert($button.text());

http://jsfiddle.net/AlienWebguy/PrfZy/3/

当然,两者的妥协是设置有效的HTML5自定义数据属性并通过data()

访问它
$button = $('<button />').attr('data-text','Some text.').attr('name','myButton');
alert($button.attr('name'));
alert($button.data('text'));

http://jsfiddle.net/AlienWebguy/PrfZy/4/