使用jquery和javascript遍历dom的正确方法以及“;这个“;
Proper way to traverse the dom with jquery and javascript and usage of "this"
这是我的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 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());
});
});
为什么我需要利用自我而不是#夜晚来工作?
如果您的文档中有多个id,名称为
#nights
,则默认情况下会选择第一个id为#nights
的id。其中this
将指示当前选定的DOM元素,而不是#nights
id。如果您使用this
,它将指示当前所选DOM元素,这就是为什么在#nights
有多个id的情况下,您可以获得正确的输出。
除非#nights
不是唯一的ID,否则它应该可以正常工作。例如,如果有多个"tour"
div,每个都有一个#nights
元素。也就是说,$(this)
更好,因为它不需要jQuery再次解析DOM。。。
问题是您有多个id为nights
的元素。您的第一块代码可以工作:http://jsfiddle.net/fomd990c/
如果您有另一个id为nights
的元素,则它不会:http://jsfiddle.net/fomd990c/1/
通常,将特定id限制为仅一个元素是一个好主意。
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- 丢失对象“;这个“;方法中的上下文
- JavaScript中的这个call()-方法是如何工作的
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 为什么这个扩展方法不起作用
- 有没有更好的方法来编写这个Show/hide JQuery代码
- 有没有办法将选择器返回到元素?是$(这个)还是其他方法
- 这个get方法似乎可以工作,但控制台中存在错误
- 如何使用addClass和延迟来执行这个.each()方法
- 有任何方法可以转换这个字符串:;库德纳ção”;对此:“;Coordena&#231&#2
- 使用jquery和javascript遍历dom的正确方法以及“;这个“;
- 我可以't克服这个错误“;未定义的局部变量或方法`f'"任何原因
- 有没有任何方法可以使这个名称生成循环运行最短的秒数
- 这个JavaScript增强的方法是如何工作的
- 对我来说,用javascript设置这个函数最有效的方法是什么
- 我是否正确地从php调用了这个javascript方法
- 为什么这个 setTimeout() 方法在这个函数中不起作用
- 为什么这个Javascript DOM方法没有'不起作用
- 为什么这个私有方法在构造函数中
- 调用同一“类”的另一个方法这个上下文在Javascript中是不同的