查找相对于按钮的嵌套范围

Find nested span relative to button

在此示例中,我无法获取 .upper.lower 的文本值。我已经试过了

var upper = $(this).closest('.col-md-12').find('.lower').text();

var upper = $(this).closest('.col-md-6').find('.lower').text();

但他们也没有用

$('#done').on('click', function(e) {

  var upper = $(this).closest('span').find('.lower').text();
  console.log(upper);
  var lower = parseInt($(this).prev().text());
  console.log(lower);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
  <div class="col-md-1 text-center">
    <div class="col-md-12">
      <div class="col-md-6 text-center"><span class="hidden-color"></span><span class="upper" id="ma-1-0">16</span>
      </div>
      <div class="col-md-6 text-center lower-box"><span class="hidden-color"></span><span class="lower" id="ma-2-0">13</span>
      </div>
    </div>
    <div class="col-md-12">
      <button class="btn btn-success" id="done">Get Upper and Lower</button>
    </div>
  </div>
</div>

为了从 #done 按钮到达这些跨度,在使用 find() 找到合适的跨度之前,向上遍历 DOM 到一个共同的祖先。

在我下面的示例中,我使用包含 div.row 作为共同祖先。鉴于您的 HTML 代码,您似乎也可以使用 div.col-md-1 因为按钮和跨度都是其后代。

$('#done').on('click', function(e) {

  var upper = $(this).closest('.row').find('.upper').text(),
      lower = $(this).closest('.row').find('.lower').text();
      
  jQuery('div#output').html('<p>Upper: '+upper+'</p><p>Lower: '+lower+'</p>');

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
  <div class="col-md-1 text-center">
    <div class="col-md-12">
      <div class="col-md-6 text-center"><span class="hidden-color"></span><span class="upper" id="ma-1-0">16</span>
      </div>
      <div class="col-md-6 text-center lower-box"><span class="hidden-color"></span><span class="lower" id="ma-2-0">13</span>
      </div>
    </div>
    <div class="col-md-12">
      <button class="btn btn-success" id="done">Get Upper and Lower</button>
    </div>
  </div>
</div>


<div id="output"></div>


编辑

以下是代码无法运行的一些解释:

var upper = $(this).closest('.col-md-12').find('.lower').text();

按钮和 span 是两个不同 .col-md-12 元素的子元素。按钮的祖先不是跨度的祖先。

var upper = $(this).closest('.col-md-6').find('.lower').text();

该按钮不是任何 .col-md-6 元素的后代。不存在这样最接近的元素。

var upper = $(this).closest('span').find('.lower').text();

没有作为按钮祖先的跨度。