提问者:小点点

何时需要重新初始化jQuery元素


在页面加载时,我存储了一个对字段的引用:var firstNameField=$('input[name=firstName]');

是否存在引用会变得“过时”的情况,即DOM中输入元素的属性或属性会发生变化,引用它的jQuery元素不能再携带正确的值?

换句话说,在哪些情况下,我需要根据底层DOM元素的变化重新初始化jQuery对象?

我不仅想知道输入字段的答案,而且想知道所有DOM元素的答案。


共2个答案

匿名用户

是否存在引用会变得“过时”的情况,即DOM中输入元素的属性或属性会发生变化,引用它的jQuery元素不能再携带正确的值?

那种特定的事情不会发生,不会的。 jQuery只包含一组maching元素。 这些是实际的元素,因此如果它们的状态发生变化(例如,一个属性发生变化,等等),当您从jQuery集中获取这段状态信息时,它将转到实际的DOM元素,从而获取当前信息。 例如:

null

const d = $("#target");
console.log("before", d.attr("data-example")); // undefined
// Change it without using jQuery
document.getElementById("target").setAttribute("data-example", "updated");
console.log("after ", d.attr("data-example")); // "updated"
<div id="target"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

匿名用户

jQuery将保存对实际HtmlElement的引用。 只要这个元素在DOM中,它就会有效。 如果您以某种方式删除了元素(或者元素是在var firstNameField=$('input[name=firstname]');之后插入的,例如因为Ajax),您将需要“重新初始化”。

当然,您可以做一些愚蠢的事情,比如firstNameField[0]=null并覆盖对元素的引用。