Почему я должен использовать «ближайший», когда есть только один элемент с указанным именем класса?

0

При изучении с помощью кодовой школы это назначение переменной считается правильным.

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
Лучший ответ

Это полезно, если на странице присутствует несколько экземпляров элементов tour, а затем, когда изменяется значение определенного input элемента, нам нужно узнать суточную цену для соответствующего тура. В этом случае, если вы используете $('.tour') он всегда будет давать цену самого первого тура, а не тот, значение которого изменяется. В этом случае нам нужно выяснить элемент tour который является предком рассматриваемого элемента, который является причиной использования .closest().

Если вы уверены, что на странице не будет больше одного элемента tour тогда нет необходимости использовать .closest()

  • 0
    это то, о чем я думал. Тогда ошибка в другом месте. Спасибо
  • 0
    ХОРОШО. Codeschool просто заставлял меня использовать .closest () для образовательных целей.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню