我怎样才能创建一个类似的jQuery函数
$.MyFunction(/*optional parameter*/)?
Run Code Online (Sandbox Code Playgroud)
哪个会回归bool?
注意:
我试过这个:
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;
});
});
Run Code Online (Sandbox Code Playgroud)
但它在alert()上崩溃了
Microsoft JScript runtime error: Object doesn't support this property or method
Run Code Online (Sandbox Code Playgroud)
这最终有效:
jQuery.isValidRequest = function (options) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
对于您打算从jQuery 实例调用的函数,您可以像这样定义它:
$.fn.MyFunction = function(options)
{
// return bool here
};
Run Code Online (Sandbox Code Playgroud)
并像任何其他jQuery方法一样调用:
$('selector').MyFunction(...);
Run Code Online (Sandbox Code Playgroud)
打算从全局jQuery对象(或其$别名)调用的函数将直接附加到该对象:
$.MyFunction = function(options)
{
// return bool here
};
Run Code Online (Sandbox Code Playgroud)
并以同样的方式打电话:
$.MyFunction(...);
Run Code Online (Sandbox Code Playgroud)
请注意,为了简洁起见,我使用了$ .fn - 如果阻止jQuery使用$ alias与其他库兼容,这可能会导致问题.附加插件功能的推荐方法是:
(function($) // introduce scope wherein $ is sure to equate to jQuery
{
$.fn.MyFunction = function(options)
{
// return bool here
};
})(jQuery); // conclude plugin scope
Run Code Online (Sandbox Code Playgroud)
还要注意大多数jQuery函数返回this,以启用链接; 如果您选择返回其他值,您将无法执行此操作.一定要清楚地记录你的函数返回一个布尔值,否则你会发现自己想知道为什么$("...").MyFunction().hide()以后会破坏它.
你可以在这里阅读更多关于扩展jQuery的内容:
扩展jQuery - 插件开发
和jQuery文档:
插件/创作