为什么我不能将这个元素引用设置为一个变量?

Why can't I set this element reference as a variable?

本文关键字:一个 变量 引用 不能 为什么 元素 设置      更新时间:2023-09-26

我有这样一个javascript对象(简化)。

var MyObject = (function(){
  var propertyOne = $('.links li:first-child');
  var propertyTwo = $('.links .active');
  function startup()
  {
    propertyOne.addClass("class");  //Works
    propertyTwo.addClass("class2");  //Does not work
    $('.links .active').addClass("class2");  // Works
  }
  return {
     init: function()
     {
       startup();
     }
  }
});

我选择propertyOne和propertyTwo的方式有什么不同?我不明白为什么

propertyOne.addClass("class");  //Works
$('.links .active').addClass("class2");  // Works

然而……

propertyTwo.addClass("class2");  //Does not work
有谁能帮我解释一下吗?

var propertyTwo = $('.links .active')被调用时propertyTwo的DOM元素必须不存在,而当startup()被调用时它就存在了。

为了确认这一点,我们需要更多关于你的脚本的信息。例如,如果在DOM完全加载之前创建了MyObject,然后在DOM完全加载之后(或者至少在加载了与$('.links .active')对应的元素之后)调用init()方法,那么我前面描述的情况可能会发生。

无论如何,您应该真正专注于学习如何调试这样的东西,以及为什么这个特定的尝试不起作用。这个过程中的主要步骤是在var propertyTwo = $('.links .active')行之后记录到控制台propertyTwo。如果控制台显示[](至少在Chrome中),这意味着没有元素匹配,这将支持我所说的正在发生的事情。