一旦你有一個jQuery對象一樣,你做得到:爲什麼從另一個jQuery對象創建一個jQuery對象?
var car = $('li .car');
我看到代碼執行以下操作:
var carChildren = $(car).children('span');
是什麼的地步了嗎? 爲什麼不在剛纔的jQuery var車上使用.children
方法就像這樣?
var carChildren = car.children('span');
一旦你有一個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);
靈活性可能被視爲一種獎勵,但它確實可以讓你做一些瘋狂愚蠢的事情。 – Nelson
這一點是*錯誤的用法*。不要這樣做。 – eisbehr
重新創建現有對象的jquery對象是沒有意義的。使用第二種方法。 –
當你正在製作一個接受字符串選擇器,jquery對象,dom節點等的多態函數時,他/她可能需要它'function doSmthToCar(car){$(car).children(...)}',即使你正在傳遞jquery對象'var car = $(); doSmthToCar(汽車)'。否則,這只是一個錯誤的用法。 –