2015-02-23 33 views
0

這是我的HTML:遍歷與jQuery和JavaScript的使用DOM中有道「這個」

<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 type="number" id="nights" value="7"> 
    </p> 
</div> 

這是我改變了span元素的測試讀什麼我鍵入到不正確的代碼數字輸入。

$(document).ready(function() { 
    $("#nights").on("keyup", function() { 
    $("#nights-count").text($("#nights").val()); 
    }); 
}); 

這是正確的代碼:

$(document).ready(function() { 
    $("#nights").on("keyup", function() { 
    $("#nights-count").text($(this).val()); 
    }); 
}); 

爲什麼我需要用自己而不是#nights這個工作?

+2

你有多個ID爲'#nights'的元素嗎? – 2015-02-23 05:21:52

+0

兩者都可以正常使用您提供的HTML,最有可能的是您有上面建議的重複的ID。 – 2015-02-23 05:23:28

回答

1

它應該工作得很好,除非#nights不是一個唯一的ID。例如,如果有多個"tour" div,每個都有一個#nights元素。這就是說,$(this)更好,因爲它不需要jQuery來走,並再次解析DOM ...

2

如果您在文檔中具有名稱#nights多個ID,然後在默認情況下,選擇帶有ID #nights第一個ID 。其中this將指示當前選擇的DOM元素而不是#nights id。如果您使用this它指示當前選定的DOM元素,這就是爲什麼你得到正確的輸出在你的情況下有多個ID與#nights