2009-05-25 12 views
45

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

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

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

Bu hazır içeriğine işlevini MyBlah çağırır:

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

Şimdi yapmam işlevi çağırmak için: olarak

MyBlah('hello'); 
+7

nitpick: jQuery sadece kütüphane değil, dildir beri, "jQuery bir işlevi tanımlamanın" yoktur. Aslında bir çerçeve olarak nitelendirilemez, sadece bir kütüphanedir. (bir _great_ library) – Javier

+0

Belki bir JQuery eklentisi mi demekti? –

cevap

84

First, kod işler için gerek ve bir fonksiyon ilan çünkü o (kenara jQuery) JavaScript bir işlevi oluşturma geçerli bir yol, ama Başka bir işlev içinde (bu durumda anonim olan) "MyBlah" küresel kapsamdan erişilemez. İş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 fonksiyon ihtiyacı yoksa bu yüzden, genel ad alanını kirletmeyen beri arzu davranış kodunun diğer kısmından çağrılacak (bazen) 'dir Bu, gitmenin yolu.

Anonim işlev dışında bildirmek onu genel ad alanına yerleştirir ve her yerden erişilebilir.

Son olarak, değişken adının başında $ (şart değil bu durumda) ihtiyacı vardı ve değişken jQuery örneği olduğunda bazen kendisini nesne bir jQuery kongre olarak kullanılmaz.

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

Ayrıca bkz: http://www.re-cycledair.com/creating-jquery-plugins

39

Hayır, sadece işlev yazabilirsiniz.

-5

Bu, belge hazır olduğunda çağrılan anonim bir işlevi nasıl tanımladığınızdır.

+4

İnsanların neden muhtemelen cevabınızı düşürdüğünü açıklığa kavuşturmak için: İşlev, bir değişkene atanmış olduğundan anonim değildir ve ikincisi, yalnızca atanmış, çağrılmayan belge hazır olduğunda işlev çağrılmaz. –

+0

J.Pablo doğrudur: bir kapak içindeki bir değişkene anonim bir işlev atanır ve ikinci bu kapatma, DOM hazır olduğunda çağrılır. –

14

sayılı

Tam olarak normal javascript olur aynı şekilde işlevlerini tanımlar. Ayrıca

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

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

: Orada her şeyden $

8

Yapabilirsiniz ne bir jQuery plugin yaratıyor ihtiyaç

Belki, işte bu böyle bir şey yapmanızı sağlayacaktır beri de çok çok kolay ve kullanışlıdır jQuery prototipini genişletin ve işlevinizi jQuery yöntemi olarak kullanın. Burada jQuery prototipini uzatma konusunda

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

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

diğer bilgiler: http://api.jquery.com/jquery.fn.extend/

0
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; 
    } 
}); 
İlgili konular