Soru JQuery'deki bir işlevi nasıl tanımlarsınız?


JQuery'deki bir işlevi nasıl tanımlarsınız?

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

Şimdi yaptığım işlevi çağırmak için:

MyBlah('hello');

45
2018-05-25 18:22


Menşei


nitpick: jQuery dil değil, yalnızca bir kütüphane olduğu için "jQuery'de bir işlev tanımlamaz". Aslında bir çerçeve olarak nitelendirilemez, sadece bir kütüphanedir. (a harika kütüphane) - Javier
Belki JQuery eklentisini mi kastediyor? - Pablo Fernandez


Cevaplar:


Her şeyden önce, kod çalışır ve bu JavaScript (jQuery bir kenara) bir işlev oluşturmak için geçerli bir yol, ancak başka bir işlev içinde bir işlev bildiriyorsunuz çünkü (bu durumda anonim) "MyBlah" erişilemez küresel kapsam.

İşte bir örnek:

$(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)

Bu (bazen) arzu edilen bir davranış genel ad alanını kirletmeBu nedenle, işlevinizin kodunuzun diğer bölümlerinden çağrılması gerekmiyorsa, işte bu yoldur.

Bunu anonim işlev dışında ilan etmek onu genel ad alanına yerleştirir ve her yerden erişilebilir.

Son olarak, $ Değişken adının başında gerekli değildir ve bazen jQuery nesnesinin bir örneği olduğunda jQuery kuralı olarak kullanılır (bu durumda zorunlu olarak değil).

Belki ihtiyaç duyduğunuz şey bir jQuery eklentisiBu, böyle bir şey yapmanıza izin vereceğinden, bu çok kolay ve kullanışlı bir özelliktir:

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

Ayrıca bakınız: http://www.re-cycledair.com/creating-jquery-plugins


86
2018-05-25 18:38





Hayır, işlevi sadece şöyle yazabilirsiniz:

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

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

Bu işlevi çağırıyor MyBlah içerik hazır.


42
2018-05-25 18:25





Yok hayır.

Fonksiyonları, normal javascript ile aynı şekilde tanımlarsınız.

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

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

Ayrıca: $ için gerek yok


14
2018-05-25 18:25





JQuery prototipini genişletebilir ve fonksiyonunuzu jQuery yöntemi olarak kullanabilirsiniz.

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

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

Burada jQuery prototipini genişletme hakkında daha fazla bilgi: http://api.jquery.com/jquery.fn.extend/


8
2018-04-09 11:37





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;
    }
});

1
2018-02-16 12:22





Belge hazır olduğunda çağrılan anonim bir işlevi nasıl tanımlarsınız.


-5
2018-05-25 18:25



İnsanların neden muhtemelen cevabınızı düşürdüğünü açıklığa kavuşturmak için: İşlev bir değişkene ve ikinciye atanmış olduğu için anonim değildir, yalnızca atanmış, çağrılmadığı için belge hazır olduğunda işlev çağrılmaz. - I.devries
J.Pablo doğrudur: bir kapak içinde bir değişkene anonim bir işlev atanır ve ikinci bu kapatma, DOM hazır olduğunda çalıştırılır. - Lorenz Lo Sauer