2013-09-22 57 views
0

在使用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> 

回答

0

如果有內頁tour元素的多個實例,它是有用的,那麼當一個特定的input元素值改變,我們需要找出每日價格對應的旅遊。在這種情況下,如果您使用$('.tour'),它將始終給出第一次遊覽的價格,而不是輸入值發生更改的遊覽的價格。在這種情況下,我們需要找出tour元素,它是元素的祖先,這就是使用.closest()的原因。

如果您確信絕不會有在頁面超過一個tour元素則沒有必要使用.closest()

+0

這就是我的想法。然後錯誤在別處。謝謝 – dwilbank

+0

好的。 Codeschool只是迫使我使用.closest()出於教育目的。 – dwilbank

+0

這並不是說有任何「錯誤」,他們可能會試圖指出'$('。tour')'可以選擇多個元素,並且在嘗試使用'data'時只會對第一個元素進行操作,而'.closest'只會得到一個(你感興趣的),所以你使用正確的一個。 – Chad

相關問題