Это как вы определяете функцию в jQuery? - PullRequest
48 голосов
/ 25 мая 2009

Это как вы определяете функцию в jQuery?

$(document).ready( function () {
    var MyBlah = function($blah) { alert($blah);  };
 });

Теперь для вызова функции я делаю:

MyBlah('hello');

Ответы [ 6 ]

92 голосов
/ 25 мая 2009

Прежде всего, ваш код работает, и это правильный способ создания функции в JavaScript (за исключением jQuery), но поскольку вы объявляете функцию внутри другой функции (в данном случае анонимной), «MyBlah» не будет доступны из глобальной области видимости.

Вот пример:

$(document).ready( function () {

    var MyBlah = function($blah) { alert($blah);  };

    MyBlah("Hello this works") // Inside the anonymous function we are cool.

 });

MyBlah("Oops") //This throws a JavaScript error (MyBlah is not a function)

Это (иногда) желательное поведение, так как мы не загрязняем глобальное пространство имен , поэтому, если вам не нужно вызывать вашу функцию из другой части вашего кода, это путь.

Объявление его вне анонимной функции помещает его в глобальное пространство имен, и оно доступно отовсюду.

Наконец, $ в начале имени переменной не требуется, и иногда используется как соглашение jQuery, когда переменная является экземпляром самого объекта jQuery (необязательно в этом случае).

Может быть, вам нужно создать плагин jQuery , это очень легко и полезно, так как позволит вам сделать что-то вроде этого:

$('div#message').myBlah("hello")

См. Также: http://www.re -cycledair.com / creation-jquery-plugins

44 голосов
/ 25 мая 2009

Нет, вы можете просто написать функцию как:

$(document).ready(function() {
    MyBlah("hello");
});

function MyBlah(blah) {
    alert(blah);
}

Вызывает функцию MyBlah для содержимого готово.

16 голосов
/ 25 мая 2009

Нет.

Вы определяете функции точно так же, как в обычном javascript.

//document ready
$(function(){
    myBlah();
})

var myBlah = function(blah){
    alert(blah);
}

Также: нет необходимости в $

8 голосов
/ 09 апреля 2014

Вы можете расширить прототип jQuery и использовать свою функцию в качестве метода jQuery.

(function($)
{
    $.fn.MyBlah = function(blah)
    {
        $(this).addClass(blah);
        console.log('blah class added');
    };
})(jQuery);

jQuery(document).ready(function($)
{
    $('#blahElementId').MyBlah('newClass');
});

Подробнее о расширении прототипа jQuery можно прочитать здесь: http://api.jquery.com/jquery.fn.extend/

1 голос
/ 16 февраля 2017
jQuery.fn.extend({
    zigzag: function () {
        var text = $(this).text();
        var zigzagText = '';
        var toggle = true; //lower/uppper toggle
            $.each(text, function(i, nome) {
                zigzagText += (toggle) ? nome.toUpperCase() : nome.toLowerCase();
                toggle = (toggle) ? false : true;
            });
    return zigzagText;
    }
});
0 голосов
/ 25 мая 2009

Так вы определяете анонимную функцию, которая вызывается, когда документ готов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...