2011-03-06 49 views
0

下面的代碼一塊理論是關於不知道我看到關於包裝方法理論直

$.fn greenify = function(){ 
return this.css ('color','green'); 
} 

所以這個可以用如下

$('#today').greenify(); 

屆時,理論說:

「一個包裝方法必須總是返回原始的集合,因此return this。這樣你就可以在鏈中使用你的方法。」

對我來說,到目前爲止,我看到一種包裝方法是一種定位多個HTML元素的方法。這是否僅僅意味着,如果您針對這些元素,您實際上會獲得這些有針對性的HTML元素,就像它們一樣,不加修改?所以,當你說這個回報時,你想確認你確切知道你得到了什麼,所以你知道你在鏈接時使用了什麼?或者這意味着什麼不同?

+1

沒有您的報價的上下文,這將是很難回答。它從哪裏來的 ?它是唯一的相關部分嗎? – krtek 2011-03-06 11:00:18

+0

抱歉。我用提供上下文的代碼改變了我的問題。 – Immers 2011-03-06 11:04:54

+0

即使在沒有任何'greenify()'的代碼返回的情況下,該示例也可以很好地工作。並且返回的不是'this'它是'this.css('color','green')的返回值''我想你應該問你的教授或者真的改善你的問題;) – krtek 2011-03-06 11:10:09

回答

0

一個包裝方法基本上意味着

對於任何選擇器S和任何方法 method。 $(S)。方法()=== $(S)

你的情況,你想

$.fn greenify = function(){ 
return this.each(function() { 
    this.css("color", "green"); 
}); 
} 

這裏你的方法修改集合中的每個DOM元素的顏色。而且您已經斷言this.each作爲jQuery對象$(s)上的方法將返回集$(s),因此您的方法也會返回$(s)

當然,爲了簡單起見,您的功能也是相同的,因爲$.fn.css已經過優化,可以在引擎蓋下工作。爲了清楚起見,我們自己撥打$.fn.each而不是$.fn.css