jQuery对象引用如何工作?

时间:2012-03-01 02:43:28

标签: jquery

我有一个假设性的问题,在某种程度上,知识是有点模糊的。

如果我有一个jquery对象:Common.$footer = $('.footer');

当页脚不存在时我宣布它,但随后页脚会被添加,那么引用是否会起作用?

或类似的情况,如果我在页脚显示时做了相同的操作,然后将其删除,我就用它了。

我想知道是否可以在我的代码中尽早设置一些引用,我可以稍后使用并测试对象是否存在:

Common.$footer[0] && MyFuncCall();

另外,如果我稍后添加一个元素,可以用$('。my-dynmically-added-el')抓住它吗?或者我需要使用.live还是什么?

2 个答案:

答案 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对象。