直接在dom路径中查找元素

时间:2011-06-19 08:25:32

标签: jquery dom

我的dom结构看起来像(虽然复杂得多)

<div>
  <div>
    <div>
      <div class="remaining">132</div>
    </div>
  </div>
  <div>
    <button>clicky</button>
  </div>
</div>
<div>
  <div>
    <div>
      <div class="remaining">142</div>
    </div>
  </div>
  <div>
    <button>clicky</button>
  </div>
</div>
<div>
  <div>
    <div>
      <div class="remaining">152</div>
    </div>
  </div>
  <div>
    <button>clicky</button>
  </div>
</div>

正如您所看到的,具有类remaining的div不会直接位于相对按钮的dom路径中。

如何点击该按钮,将相对remaining div增加1?

4 个答案:

答案 0 :(得分:7)

给普通父母一些有意义的课程:

<div class="meaningful">
  <div>
    <div>
      <div class="remaining">152</div>
    </div>
  </div>
  <div>
    <button>clicky</button>
  </div>
</div>

然后您可以使用.closest().find()

$('button').click(function() {
    var $remaining = $(this).closest('.meaningful').find('.remaining');
    // change text...
});

答案 1 :(得分:5)

您可以找到包含.remaining div ..

的最近父级
$('button').click(function() {
    var $remain = $(this).closest(':has(div.remaining)').find('.remaining');
    $remain.text( parseInt($remain.text(),10) + 1);
});

demo http://jsfiddle.net/gaby/ujW2e/

答案 2 :(得分:0)

$('button').click(function() {     
    var workDiv = $(this).parents().find('.remaining').first();
    workDiv.text(parseInt(workDiv.text())+1);
}); 

答案 3 :(得分:-1)

$('button').click(function() {
   var remainingdiv = $(this).closest('.meaningful').find('.remaining');
   remainingdiv.html(parseInt(remainingdiv.html(), 10) + 1);
}