2010-08-13 6 views
2

Как я могу создать функцию JQuery, какКак создать функцию jQuery для возврата bool?

$.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

Wait - у вас есть две версии JQuery активных сразу?Какие символы вы используете, чтобы различать их? Или вы просто подразумеваете, что вы используете jQuery 1.2.6 для этого. – Shog9

+1

Если вы определяете свою функцию в '$ .fn', тогда вам нужно называть ее' $ .fn.isValidRequest ("blah") 'или из объекта jQuery' $ ('selector'). IsValidRequest() '. Кажется, это не то, чего ты хочешь. Если это просто больше полезности, тогда определите его под 'jQuery', как в' jQuery.isValidRequest = function (... '. – user113716

+0

@ Shog9 - Я думаю, что OP объяснял (в комментарии к коду), почему он использует' livequery 'вместо' live() '.Я могу ошибаться, однако. – user113716

ответ

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, чтобы включить сцепление; если вы выберете другое значение, вы не сможете это сделать. Обязательно четко указывайте, что ваша функция возвращает логическое значение, или вы будете удивлены, почему, например, $("...").MyFunction().hide() перерывы позже.

Вы можете прочитать больше о расширении Jquery здесь:
Extending jQuery – plugin development
и в документации JQuery:
Plugins/Authoring

+1

Заметка стиля: используя $ .fn вместо jQuery.fn, вы введете ошибки, если $ используется какой-либо другой библиотекой (через ['jQuery.noConflict()'] (http: //api.jquery. ком/jQuery.noConflict /)). – Shog9

+0

я использовал $ ради bravity, в рекомендуемом способе (функция ($) { $ .fn.MyFunction = функция (опция) { // возвращение Его здесь } }) (Jquery); –

+0

Это не работает. Я обновил вопрос, чтобы отразить, спасибо – DaveDev

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

использование:

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

$ .fn.MyFunction = функция (PARAMS) {возвращает истину; }

0
$.fn.MyFunction = function(param) { 
    if(arguments.length > 0) 
     return true; 
    else 
     return false; 
} 
Смежные вопросы