<div id="div1">
<div class="row" >
<div class="span2" >
<input type=button value="" name="btn1"/>
</div>
</div>
</div>
$(document).ready(function() {
$('#div1[name="btn1"]').val('test hello');
});
为什么这不起作用?
其中
$(document).ready(function() {
$('[name="btn1"]').val('test hello');
});
似乎有效,但我有一些其他div需要填充值。
我可以重复使用输入元素的名称,还是必须是唯一的?
答案 0 :(得分:7)
您的选择器正在寻找具有属性#div1
的{{1}}。试试这个。
name=btn1
答案 1 :(得分:3)
您正在使用的选择器正在尝试查找名称属性设置为btn1
的DIV。您应该只是按名称查找输入或在DIV中查找具有该名称的输入。请注意,名称不需要是唯一的,尽管ID可以。
$('#div1 [name="btn1"]').val(...); // the space makes all the difference
如果页面上只有一个带有该名称的元素,您只需使用
即可 $('[name="btn1"]').val(...);
答案 2 :(得分:1)
你已经有了几个有效的解决方案,但我想提出一些建议。为什么不在按钮元素中添加一个类?类似的东西:
<div id="div1">
<div class="row" >
<div class="span2" >
<input type="button" class="-row-button" value="" name="btn1"/>
</div>
</div>
</div>
现在,您的选择器只是$(".-row-button").val("test hello");
为什么重要?好吧,DOM遍历非常昂贵,像$("#div1 [name='btn1']")
这样的选择器效率远低于类选择器。那是因为#div1
和[name='btn1']
之间的简单空间意味着jQuery将在#div1
下搜索所有级别的子控件。这是件坏事。
即使您的网页非常小,您也应该养成这样做现在的习惯。此更改将使您的jQuery代码:
.-row-button
类可以从#div1
下面移动,你的jQuery代码仍然可以工作)答案 3 :(得分:0)
下面的代码将获取div1下的input元素并将文本设置为“test hello”
$(document).ready(function() {
$('#div1').find("input").val('test hello');
});