2012-11-25 67 views
7
(function($) { 
    $.fn.top_islides = function(){ 
     var ajax_init = function(){ 
      init_islides(); 
      setTimeout(function(){picmove()},300); 
     }; 
//..... 
    }; 
})(jQuery); 

調用它doucument準備在另一個文件如何在jquery插件中調用函數?

$('#top_slides').top_islides(); 
$('#top_slides').top_islides().ajax_init(); 

我認爲它應該工作,我得到了一個錯誤,有什麼問題呢?

回答

5

做這樣的:

(function($) { 
    //Assuming $.fn.top_islides is defined 
    $.fn.top_islides.ajax_init = function(){ 
     init_islides(); 
     setTimeout(picmove,300); 
    }; 
//..... 
})(jQuery); 

或使用var函數內部時

(function($) { 
    $.fn.top_islides = function(){ 
     var ajax_init = function(){ 
      init_islides(); 
      setTimeout(picmove,300); 
     }; 
     return { 
      ajax_init: ajax_init 
     }; 
    }); 
    //..... 
})(jQuery); 
+1

好吧我得到它的作品通過您的代碼謝謝 – FatDogMark

3

嘗試是這樣的,如下面的例子: -

<script type="text/javascript"> 


    $.someplugin = { 
     CallMe : function() { 
      alert("You called?"); 
     }, 
     otherstuff : function() { alert("other stuff!"); } 
    }; 


    $.someplugin.CallMe(); 
    $.someplugin.otherstuff(); 
</script> 
+0

我改\t ajax_init:函數(){ \t \t \t init_islides (); setTimeout(function(){picmove()},300); \t \t};但錯誤說SyntaxError:函數語句需要一個名稱 – FatDogMark

0

,它將使元素「私密」。在Javascript工作中使用可視化是一種很不明智的方式,而真正的類結構不能用於Javascript。 你需要或者將它設置爲你的函數的原型或返回一個對象

(function($) { 
    $.fn.top_islides = function(){ 
    var ajax_init = function(){ 
     init_islides(); 
     setTimeout(function(){picmove()},300); 
    }; 
    return { 
     'ajax_init': ajax_init 
    }; 
    //..... 
    }; 
})(jQuery); 

(function($) { 
    $.fn.top_islides = function(){ 
    //..... 
    }; 
    $.fn.top_islides.prototype.ajax_init = function(){ 
    init_islides(); 
    setTimeout(function(){picmove()},300); 
    } 
})(jQuery); 

,但在你的情況,你將不會被使用的原型,因爲你不是活得t實例化一個新的top_islides對象,但通過jQuery訪問,所以第一個選項是你最好的選擇。

+0

你能解釋一些關於'返回',我不明白,如何調用返回值? – FatDogMark

+0

'return'完成它的名字,從函數返回一些東西。如果要返回多個值,則需要使用一個對象,併爲每個返回元素命名。你可以返回變量,函數或其他對象,你可以稱它爲$('element')。top_islides()。funct()或$('element')。top_islides()。variable' or a object' $( '元素')。top_islides()。obj.property()' – pocesar

0

伊莫,最好的解決方案是使用觸發器更清潔,因爲你可以保持可鏈式插件系統。

你可以在你的插件聲明,並觸發外界宣佈事件處理程序:

(function($) { 
    $.fn.top_islides = function(){ 
    this.on ('init_islides', function(){ 
     setTimeout(function(){picmove()},300); 
    }; 
    //..... 
    }; 
})(jQuery); 
$("button").click(function() { 
    $("p").trigger("init_islides"); 
}); 

DOC可以在這裏找到:http://api.jquery.com/on/

相關問題