2016-12-16 88 views
0

我對JQuery插件相當陌生,我試圖製作一個插件,它接受用戶編寫的函數,並且想要在特定部分中調用它我的插件。可悲的是,我並不真正知道要尋找什麼,迄今爲止我發現的所有問題似乎都沒有給我我想要的答案。JQuery插件,讓用戶在插件中運行自定義函數

我有一個jQuery的插件

$.fn.plugin = function(options) { 
    var settings = $.extend({ 
     //FUNCTION MIGHT GO IN HERE? 
    }, options); 

    this.each(function() { 

     $(this).click(function(){ 
      //RUN FUNCTION USER DEFINES ON CALL 
     }); 

    return this; 
}; 

下面的代碼,我希望用戶能夠調用它像這樣: (這將最有可能被稱爲否則,這個代碼是這正是我想象它可以像,使其更容易理解我想要達到的。

$("p").plugin(doStuff("foo"));  
function doStuff(param1){ 
    console.log(param1); 
} 

預先感謝您的幫助。

+1

這並不是提供一個回調的正確方法。它應該是'.plugin(function(){doStuff(「foo」);})'。否則,它會在用戶初始化插件時運行'doStuff(「foo」)',而不是在插件運行時運行。 – Barmar

回答

1

回調函數應該在其中一個選項中。我們稱之爲onClick

$.fn.plugin = function(options) { 
    var settings = $.extend({ 
     onClick: function() { 
      console.log("default"); 
     } 
    }, options); 

    this.each(function() { 
     $(this).click(function(){ 
      settings.onClick(); 
     }); 

    return this; 
}; 

然後你會提供一個函數初始化插件:

$("p").plugin({ 
    onClick: function() { 
     doStuff("foo"); 
    } 
});