2010-08-13 101 views
2

如何創建一個jQuery函數像如何創建一個jQuery函數來返回一個布爾值?

$.MyFunction(/*optional parameter*/)? 

將返回一個布爾值?

注:

我已經試過這樣:

jQuery.fn.isValidRequest = function (options) { 

    return true; 
} 

// I'm contending with Prototype, so I have to use this  
jQuery(document).ready(function ($) {  

    // and jQuery 1.2.6, supplied by the client - long story 
    $('a').livequery('click', function() { 

     alert($.isValidRequest("blah")); 
     return false; 
    }); 
}); 

,但它崩潰的警報()與

Microsoft JScript runtime error: Object doesn't support this property or method 

這到底是什麼工作:

jQuery.isValidRequest = function (options) { 

    return true; 
} 
+0

等待 - 您有jQuery的兩個版本一次激活?你用什麼符號來區分它們?或者你只是表示你正在使用jQuery 1.2.6。 – Shog9 2010-08-13 20:53:32

+1

如果你在'$ .fn'中定義你的函數,那麼你需要在那裏調用它'$ .fn.isValidRequest(「blah」)'或者從一個jQuery對象$('selector')。isValidRequest ()'。看起來不像你想要的那樣。如果它只是更多的實用工具,那麼在'jQuery'下將它定義爲''jQuery.isValidRequest = function(...'。 – user113716 2010-08-13 20:53:55

+0

@ Shog9 - 我認爲OP正在解釋(在代碼註釋中)他爲什麼使用'livequery ''而不是'live()',但我可能是錯的 – user113716 2010-08-13 20:58:52

回答

5

對於您打算從jQuery的實例調用一個函數,你定義它是這樣的:

$.fn.MyFunction = function(options) 
{ 
    // return bool here 
}; 

並調用就像任何其他的jQuery方法:

$('selector').MyFunction(...); 

打算從全局jQuery對象(或其$別名)調用的函數將直接附加到該對象:

$.MyFunction = function(options) 
{ 
    // return bool here 
}; 

,並調用同樣的方式:

$.MyFunction(...); 

請注意,我用了簡潔.fn $ - 如果從使用$別名與其他庫的兼容性防止jQuery的這可能會導致問題。附加插件功能推薦的方法是:

(function($) // introduce scope wherein $ is sure to equate to jQuery 
{ 
    $.fn.MyFunction = function(options) 
    { 
    // return bool here 
    }; 
})(jQuery); // conclude plugin scope 

還要注意,大多數的jQuery函數返回this,使鏈接;如果你選擇返回其他值,你將無法做到這一點。一定要清楚地記錄你的函數返回一個布爾值,否則你會想知道爲什麼例如稍後再打破。

您可以在此處詳細瞭解擴展jQuery的:
Extending jQuery – plugin development
和jQuery的文檔:
Plugins/Authoring

+1

樣式註釋:通過使用$ .fn而不是jQuery.fn,如果$被其他庫使用(通過['jQuery.noConflict()'](http://api.jquery) COM/jQuery.noConflict /))。 – Shog9 2010-08-13 20:32:00

+0

我用了$爲bravity的緣故,推薦的方法是 (函數($) {$ = .fn.MyFunction功能(選件) {// 返回布爾這裏 } })(jQuery的); – 2010-08-13 20:37:16

+0

這是行不通的。我已經更新了這個問題來反映,謝謝 – DaveDev 2010-08-13 20:45:58

0
$.myfunction(options){ 
return options.isThisTrue; 
} 

用法:

 $(document).ready(function(){ 
     var isThisTrue = $.myfunction({isthisTrue: false}); 
     // isThisTrue is false 
     }); 
0

$ .fn.MyFunction =函數(PARAMS){返回true; }

0
$.fn.MyFunction = function(param) { 
    if(arguments.length > 0) 
     return true; 
    else 
     return false; 
} 
相關問題