2015-02-23 85 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