jQuery .val()不适用于html块?

时间:2013-08-13 13:00:44

标签: javascript jquery

我无法弄清楚,为什么这段代码无法正常工作:

var $obj = jQuery('<div>xx<input type="text" value="" />xx</div>');
$obj.find('input').val('testing');
console.log($obj.html());

结果输出没有任何变化 - 即没有值的变化。但append()和其他功能正常。可能有什么不对?

2 个答案:

答案 0 :(得分:7)

value是输入对话框的 atrribute

执行.val(...)更改值属性,而不是DOM中的值。

有关属性和属性之间的差异,请参阅here


如果您想在值属性中看到物理更改,可以执行以下操作:

var $obj = jQuery('<div>xx<input type="text" value="" />xx</div>');
$obj.find('input').attr('value','testing');
console.log($obj.html());

演示:http://jsfiddle.net/maniator/YsZLt/

答案 1 :(得分:0)

"value" - 属性映射到.defaultValue属性。

没有属性映射到.value属性。但是,non-dirty inputs 输入,您可以设置属性"value"(显然,.defaultValue),这将被反映出来 在属性.value

由于您的输入是非脏的,您可以这样做

var $obj = jQuery('<div>xx<input type="text" value="" />xx</div>');
$obj.find('input').prop('defaultValue', 'testing');
console.log($obj.html());
//xx<input type="text" value="testing">xx