При изучении с помощью кодовой школы это назначение переменной считается правильным.
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>
Это полезно, если на странице присутствует несколько экземпляров элементов tour
, а затем, когда изменяется значение определенного input
элемента, нам нужно узнать суточную цену для соответствующего тура. В этом случае, если вы используете $('.tour')
он всегда будет давать цену самого первого тура, а не тот, значение которого изменяется. В этом случае нам нужно выяснить элемент tour
который является предком рассматриваемого элемента, который является причиной использования .closest()
.
Если вы уверены, что на странице не будет больше одного элемента tour
тогда нет необходимости использовать .closest()