jQuery

2009-11-17 10 views
8

parametrelerini kullanarak olayı bağla ve aç: Bir olayı, parametreleri içeren bir textbox numaralı bağlama bağlamaya çalışıyorum. Aşağıdaki işlem, yapması gerektiği gibi görünür, ancak sayfa her yüklendiğinde, yürütülür.jQuery

jQuery(function(){ 
    jQuery('#textbox').bind('click', EventWithParam('param')); 
}); 

olay o parametrenin sayfa her yüklendiğinde ile çağrılır. Bu, çalışmayabilir çünkü parametreler içeren olaylar desteklenmez. Eğer öyleyse, başka bir rota var mı?

cevap

10

Parametre alan bir işlevi bağlamak için, parametreler üzerinde kapatma görevi görmek üzere anonim bir işlev kullanın.

jQuery(function($) { 
    var param = 'text'; 
    $('#textbox').click(function() { 
     EventWithParam(param); 
     // or just use it without calling out to another function 
     $(this).text(param); 
    }); 
}); 

Sizin örnek o işlev çağrısının sonucu bağlamak için çalışıyor sonra EventWithParam işlev yürütülürken, ve kapanır. Bir işlev belirtmeden unbind numaralı telefonu çağırmak, belirtilen tüm olayları (anonim işlev de dahil olmak üzere) geçersiz kılar. Özellikle o fonksiyonu kesme istediğiniz takdirde, böyle bir adla bunu sağlamak gerekir:

jQuery(function($) { 
    var param = 'text', 
     clickCallback = function() { 
      EventWithParam(param); 
      // or just use it without calling out to another function 
      $(this).text(param); 
     }; 
    $('#textbox').click(clickCallback); 
}); 
1

nedeni EventWithParam senin bağlayıcı içinde orada bir fonksiyon olarak çağrılan olmasıdır. Başka bir şekilde ifade ederseniz, tıklama etkinliğini, EventWithParam('param') numaralı telefonu arayarak sonucu sonucuna bağlarsınız.

jQuery('#textbox').bind('click',function(){EventWithParam('param')}); 

Şimdi bağlı ettik bile olay yangınlar, tam olarak doğru olduğunu EventWithParam('param')

+0

, anonim işlevini unbind olacak? jQuery ('# textbox'). ('Tıkla'); –

+0

Evet. Bkz. [Http://docs.jquery.com/Events/unbind#typefn] – Dan

+0

Bu benim için çalışmıyor mu? –

0
jQuery(function() { 
    jQuery('#textbox').click(function() { 
     EventWithParam(param1,param2,...,paramN); 
    }); 
}); 

function EventWithParam(param1,param2,...,paramN) { 
    doSomething...; 
    ...; 
} 
4

bdukes arayacak, bir işleve: Bu çalışmaya gerek. JQuery'nin bind/unbind işlevi ve anonim işlevleri, olay adı boşlukları ile son zamanlarda ilgi çekici bir şey bulduğum için yanıtımı ekliyorum. Yukarıda daha önce gösterilen bind olayı aşağıdaki gibi çağrılmaktadır.

jQuery('#textbox').bind('click',function(){EventWithParam('param')});

tüm onClick olayları kaldırarak, Gerçekte jQuery('#textbox').unbind('click');

... Bu bile kullanıcının çağırmalıdır ilişkisini kesmek için.

Şimdi jQuery ad boşluklarında gelir. Adsız bir işleve sahipseniz, tıklama etkinliğine eklemek ve daha sonra aşağıdaki gibi açın. aşağıdaki gibi

jQuery('#textbox').bind('click.yourNameSpace',function(){EventWithParam('param')});

Sonra basit görüşme unbind fonksiyonunu serbest bırakmak için.

jQuery('#textbox').unbind('click.yourNameSpace');

senin onClick olayların kalanı

kalacaktır.

11

Olay parametrelerini bağlamak için ikinci bağımsız değişkenler olarak iletebilirsiniz().Bu geri arama Parametes doğrudan değil belki de bunu kullanmak istiyorum: jQuery belgelerine

: O zamanlar bir unbind yaparsanız bind

function handler(event) { 
    alert(event.data.foo); 
} 
$("p").bind("click", {foo: "bar"}, handler) 
+0

kesinlikle –

+0

kullanacağım bir şey Handler() işlevinde, nesneye "data" alanı üzerinden erişilebilir: function handler (evt) {var fooValue = evt.data.foo; } – SCO