2012-07-24 49 views
1

我是一個jQuery新手,我遇到的時候我正在讀一個jQuery書這個jQuery插件代碼示例來了。爲什麼我們需要一個功能插件,當我們寫一個方法插件

//adding a function to JQuery object 
jQuery.slowEach = function(array, interval, callback) { 
    if(! array.length) return; 
    var i = 0; 
    next(); 
    function next() { 
     if(callback.call(array[i], i, array[i]) !== false) 
      if(++i < array.length) 
       setTimeout(next, interval); 
    } 
    return array; 
}; 

//attaching a new method .slowEach() 
jQuery.fn.slowEach = function(interval, callback) { 
    return jQuery.slowEach(this, interval, callback); 
}; 

// Show an element every half second 
$('.reveal').slowEach(500, function() { 
    $(this).show(); 
}) 

我只想知道在編寫這樣的方法插件時是否有必要編寫函數插件,以及最重要的是什麼?如果沒有,我可以寫在jQuery.fn.slowEach方法整個事情沒有功能插件?

謝謝!

回答

3

如果我沒有錯,寫你的函數/法jQuery.fn,你將能夠使用它在所有的jQuery對象,因爲.fn某種捷徑來的jQuery prototype。你可以這樣做,但你需要改變原始代碼中的一些事情(例如,您將需要使用thisarray變量)。這樣一來,你就可以做到這一點:

//select a DOM element and apply the plugin on it 
$('.reveal').slowEach(500, function() { 
    $(this).show(); 
}); 

編寫插件爲jQuery.yourplugin使得它無需一個jQuery元素訪問。這意味着你將能夠做到這樣的事情:

//use it without doing it over a jQuery element 
var ar = [1,2,3]; 
jQuery.slowEach(ar,500,function(){ 
    alert("hey"); 
}); 
+1

好的答案。詳細說明;基本上你不需要'jQuery.slowEach',相反它更容易簡單地寫對原型,引用'this'。 http://docs.jquery.com/Plugins/Authoring – Richard 2012-07-24 12:23:37

+1

感謝@Victor和@Richard!我很高興我問過! – 2012-07-25 03:03:16

+1

它完美地工作時,我結合功能進入方法(我知道它不是必需的,但我只是想證明它的工作原理) 誰想要知道更多,當你把功能回到方法,你需要的人把'this'放入一個變量中,並將變量作爲'this'使用,否則不能工作。 – 2012-07-25 03:13:15

相關問題