jquery

2009-02-04 28 views
16

numaralı jquery'de aynı olay işlem kodunun birden çok olaya eklenmesini sağladım, bir giriş elemanım var ve hem değişiklik hem de tuşa basma olayını girişle bağlamak istiyorum, ancak olay işleme kodu her iki olay için de aynıdır. Aynı kodu iki kez yazmak yerine bunu yapmak için herhangi bir kısa yol var mı? Peki, bir yöntem yazmak, ancak bujquery

$("#inpt").change(function(){ 
    some code 
}); 

$("#inpt").keypress(function(){ 
    same code 
}); 

yapmanın daha kolay bir yolu var ben hem olayları bağlamak gibi bir ihtimal var olduğunu görmek istedim ki?

cevap

39

Sen yöntemine jQuery kullanabilirsiniz.

$("#inpt").on("change keypress", function() { 
    code 
}); 
+1

Teşekkürler, aradığım şeyi. –

+0

jquery [docs] 'a göre (http://api.jquery.com/bind/), "jQuery 1.7'den itibaren .on() yöntemi olay işleyicilerini bir belgeye eklemek için tercih edilen yöntemdir." Bu yüzden 1.7'den daha yeni sürümler için "$ (" # inpt ") 'ı kullanacağım (" tuşa basma ", function() { kodu });' – jbustamovej

+0

@jbustamovej Güncelleme yaptım. – tvanfosson

6

Sen fonksiyonunu kaydedip hem de bağlayabilir:

var fn = function(){ /*some code*/ }; 
$("#inpt").change(fn).keypress(fn); 
1

Ayrıca yerine 'bağlama' arasında 'canlı' olayını kullanabilirsiniz biri sugested. 'Canlı' etkinlik, dinamik oluşturulan öğeleri bile kapsayacaktır. "Özellik Seçici İle Başlayan" kullanan birden elemanlarına bağlanmak,

Kaless1n ve Matthew (1.7 kullanımdan kaldırıldı): Bütün 'giriş' elemanlarına bağlanacak

var fn = function() { /*some code*/ }; 

$('input[id^="foo_"]').click(fn).keyup(fn).keydown(fn); 

'id' başladığı 'foo_' ile. Örneğin 'girişi' herhangi bir onther öğesine ve/veya 'name' niteliği ile 'id' olarak değiştirebilirsiniz.