父母> jquery中的子符号1.3

时间:2010-07-01 13:36:18

标签: javascript jquery

我正在使用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>

现在,在这里,我想从头部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());


});

});

在这里,我无法使用父&gt;获得结果儿童记谱法

我如何访问H3&gt; A&gt; INPUT的价值在这里

3 个答案:

答案 0 :(得分:4)

<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”值如此有用的原因 - 确切的标记结构可以改变,但灵活的代码可以继续工作。

答案 1 :(得分:0)

我已经替换

$(this).next('div > div > div > div').each(function(index) 

以下

$(this).next('div').find('div > div > div >input').each(function(index) 

答案 2 :(得分:0)

所以你被赋予了一个id并需要找到其面板中包含的输入?

 $('#panel_' + givenId + ' input').each(function() { ...

或者您是否需要遍历所有面板并获取输入?