我有一个假设性的问题,在某种程度上,知识是有点模糊的。
如果我有一个jquery对象:Common.$footer = $('.footer');
当页脚不存在时我宣布它,但随后页脚会被添加,那么引用是否会起作用?
或类似的情况,如果我在页脚显示时做了相同的操作,然后将其删除,我就用它了。
我想知道是否可以在我的代码中尽早设置一些引用,我可以稍后使用并测试对象是否存在:
Common.$footer[0] && MyFuncCall();
另外,如果我稍后添加一个元素,可以用$('。my-dynmically-added-el')抓住它吗?或者我需要使用.live还是什么?
答案 0 :(得分:2)
没有参考资料。总之...
$(selector)
会返回固定的元素,当前与选择器匹配。
如果此结果为空,那么它将始终为空:生成的jQuery对象可以 - 并且应该 - 被认为是不可变的,即使它们所代表的元素可以被变异。
因此:
x = $('.footer')
// if x.length == 0 then...
// a long time later, assuming x is not assigned to again...
// x.length == 0 is still true
有live()
,但情况有所不同。
快乐的编码。
答案 1 :(得分:1)
像$(selector)
这样指定的jQuery选择器在创建对象时运行一次。如果在创建jQuery对象时该对象不存在,则jQuery对象将为空。当对象开始存在时,他们不会在以后的某个时间神奇地填充自己。这就是他们的工作方式。
有一些方法(使用事件冒泡)来处理使用.delegate()
或.on()
的未来对象生成的事件,但这与您到目前为止所描述的不同。
如果你想要一个直接引用将在未来创建的对象的jQuery对象,那么引用该对象的jQuery对象的唯一方法就是在该对象存在之后创建该jQuery对象。