我正在使用jQuery 1.3版本
<div id='mainPanel'>
<div>
<h3>Head #1 <a href="#"><input type="text" value="Type 1"/> </a></h3>
<div>
<div id="panel_1">
<div class="items">
<div><input type='text' value="0"/></div>
<div><input type='text' value="1"/></div>
<div><input type='text' value="2"/></div>
<div><input type='text' value="3"/></div>
</div>
</div>
</div>
<div>
<h3>Head #2 <a href="#"><input type="text" value="Type 2"/> </a></h3>
<div>
<div id="panel_2">
<div class="items">
<div><input type='text' value="0"/></div>
<div><input type='text' value="1"/></div>
<div><input type='text' value="2"/></div>
<div><input type='text' value="3"/></div>
</div>
</div>
</div>
<div>
</div>
现在,在这里我想从head div访问文本框的值,并需要一个ID,即panel_1和panel_2
为此,我写下了以下代码
$("#mainPanel > div > h3").each(function(index) {
var panelId = $(this).attr('id'); // i.e. panel_1 and all
// parent > child notation
var ele = $(this).next('div > div > div > div').each(function(index){
alert($(this).children('input').val());
});
});
在这里,我无法使用父>子符号获得结果
我如何访问H3> A>在此处输入值
最佳答案
<h3>
元素根本不包含任何<div>
元素,因此第一个选择器会将事情弄糟。确实不需要这么复杂:
$('#panel_1 input').each(function() { ...
将为您提供“panel_1”中的所有输入元素。
编辑-一种替代方法,现在我明白了您的意思,“我需要一个ID”:
$('div.mainPanel div.items').each(function() {
var containerId = $(this).closest('div[id]').attr('id');
$(this).find('input').each(function() {
var anInput = $(this);
// ...
});
});
依靠刚性容器结构似乎是解决长期问题的良方。这就是“class”和“id”值如此有用的原因-确切的标记结构可以更改,但是灵活的代码可以继续工作。