为什么从另一个jQuery对象创建一个jQuery对象?
问题描述:
一旦你有一个jQuery对象一样,你做得到:为什么从另一个jQuery对象创建一个jQuery对象?
var car = $('li .car');
我看到代码执行以下操作:
var carChildren = $(car).children('span');
是什么的地步了吗? 为什么不在刚才的jQuery var车上使用.children
方法就像这样?
var carChildren = car.children('span');
答
简而言之:
没有理由这样做。但结果也没有什么不同。这基本上只是不好的做法。所以不要这样做。
TL; DR
正如前面所说的,这是没有意义,它使没有什么区别。让我们思考一下这些线路的作用。需要明确的是,我们把它写在一行:
var car = $('li .car');
var carChildren = $(car).children('span');
是一样的:
var carChildren = $($('li .car')).children('span');
没有人会做这种方式!有人会写$(car)
的原因是,他们很容易被$(this)
之类的东西所迷惑,后来经常写很多次。
为什么它工作呢?
如果你写$(car)
jQuery会注意到car
已经是一个jQuery对象,并将其替换为它的上下文。但是这是一项不必要的任务,可以保存。
这就是说,你也可以直接使用car
作为上下文。
var carChildren = $('span', car);
+1
灵活性可能被视为一种奖励,但它确实可以让你做一些疯狂愚蠢的事情。 – Nelson
这一点是*错误的用法*。不要这样做。 – eisbehr
重新创建现有对象的jquery对象是没有意义的。使用第二种方法。 –
当你正在制作一个接受字符串选择器,jquery对象,dom节点等的多态函数时,他/她可能需要它'function doSmthToCar(car){$(car).children(...)}',即使你正在传递jquery对象'var car = $(); doSmthToCar(汽车)'。否则,这只是一个错误的用法。 –