2014-06-13 76 views
1

我正在jquery中構建一個基本的插件。該插件工作正常,即使沒有使用插件返回,但他們正在使用jQuery網站返回來創建一個插件。所以我只想知道什麼是需要在插件返回。 Fiddle使用jquery插件返回

$.fn.abc= function(options){  
    var settings = $.extend({ 
    // These are the defaults. 
    width: "50px", 
    borderLeft: "solid 1px #cecece" 
    }, options); 

    this.width(150) 

    this.find('ul').each(function(i,elem){ 
     console.log(elem)  
     $(elem).css({width:settings.width}) 

    })  

} 
+0

你不需要返回任何東西,在jQuery中他們返回對象本身鏈接的目的。例如:'.stop().css().show()' – Banana

+0

這真的取決於你的函數的目的。如果你需要用它產生的價值做一些事情,那麼你可能想要返還它。如果它沒有產生任何價值,或者你不需要任何東西不返回任何東西也沒關係。 – RaYell

+0

你真的不需要添加[tag:jsfiddle]標籤的問題,實際上不是*關於JSFiddle *,@Tripp – Shog9

回答

2

回報用於鏈接,您創建的插件不需要返回任何東西,但你可能要創建兩個插件將被鏈接在一起,你不返回任何東西的話,

$('div').abc().css("background":"red");

止跌「T工作..

來到你的問題,

var el= this.find('ul').each(function(i,elem){ 
    console.log(elem)  
    $(elem).css({width:settings.width}) 

}); 
return el; 

http://jsfiddle.net/Nm93a/2/

這樣我可以返回所有的元素,而不是做

return this.find('ul').each(function(i,elem){ 
      console.log(elem)  
      $(elem).css({width:settings.width}) 

     }); 
這些代碼的

http://jsfiddle.net/Nm93a/1/

兩個類似的工作,使用jQuery的優勢 方法寫更少的代碼

,這些小東西讓jquery成爲一個輕量級庫

+0

我知道鏈接,但我的問題是爲什麼我們需要使用每個函數的返回,而不是我們可以返回這個函數結尾 – Carlos

+0

都是相似的,當你返回與每個你寫較少的代碼,而不是寫入單獨的語句爲返回所有元素。 –

+0

編輯我的代碼希望它可以幫助.. –

1

它使用鏈接,沒有你做不到的東西返回,如:

$('.element').hide().show().css({width:200}).animate({height:100}), 

代替你將不得不每次

$('.element').hide(); 
$('.element').show(); 
$('.element').css({width:200}); 
$('.element').animate({height:100}); 
+0

優秀的答案,喬納斯。我冒昧地將「連接」改爲「鏈接」,因爲這是通常用於此的術語。 –

+0

沒問題,感謝您的幫助 –

+0

很高興幫助。我非常喜歡你用你的例子說明這個概念的方式。 –

0

return改寫選擇用於在函數完成時返回值...假設我有一個非常基本的JavaScript函數:

addNums = function(value1, value2){ 
    return value1 + value2; 
} 

然後我是做這樣的事情:

alert(addNums(4, 4)); 

這將返回8因爲:

return value1 + value2; 
0

我假設你的意思是這樣

$.fn.plugin = function() { 
    var settings = $.extend({ 
     width: '50' 
    }, options); 

    // return statement here? 
    return this.find('ul').each(function(i, el){ 
     console.log(el); 
    }) 
} 

如果是這樣,通過添加return,您允許鏈接。它返回傳遞給方法(可以進一步傳遞)的jQuery對象(帶有上下文)。