当只有一个具有指定类名的元素时,为什么必须使用“最接近”?

时间:2013-09-22 05:56:16

标签: jquery

在使用codeschool学习时,这个变量赋值被认为是正确的。

var dailyPrice = +$(this).closest(".tour").data("daily-price");

虽然我的原始答案被认为是错误的。

var dailyPrice = +$('.tour').data('daily-price');

这是完整的html,只有一个“巡回”课程。关于它没有任何含糊之处。那么为什么我的回答错了呢?

<div class="tour" data-daily-price="357">
  <h2>Paris, France Tour</h2>
  <p>$<span id="total">2,499</span> for <span id="nights-count">7</span> Nights</p>
  <p>
    <label for="nights">Number of Nights</label>
  </p>
  <p>
    <input id="nights" value="7" type="number">
  </p>
</div> 

1 个答案:

答案 0 :(得分:0)

如果页面中有多个tour元素实例,那么它很有用,那么当特定input元素值更改时,我们需要找出相应游览的每日价格。在这种情况下,如果您使用$('.tour'),它将始终给出第一个游览的价格而不是其输入值被更改的游览的价格。在这种情况下,我们需要找出tour元素,它是所讨论元素的祖先,这是使用.closest()的原因。

如果您确定页面中永远不会有多个tour元素,则无需使用.closest()