2009-10-29 16 views
16

jQuery'nin 'live' yöntemi birden çok olayı işleyemiyor. Herkes mevcut ve gelecekteki öğeleri yoklayan bir işleve birden çok olay eklemek için iyi bir geçici çözüm biliyor mu? Yoksa ihtiyacım olan her olay işleyicisi için yinelenen canlı yöntemler kullanıyorum mı? .bind() sağlanan işlevselliği benzer çoklu, boşlukla ayrılmış olayları kabul edebilir jQuery 1.4.1 .live() itibariylejQuery 'live' yöntemine çoklu olayları bağlama

$('.myclass').live('change keypress blur', function(){ 
    // do stuff 
}); 
+0

aynı etkinliğe birden fazla işleyici eklemeye mi çalışıyorsunuz? ya da birçok farklı etkinlik için bir işleyici eklemeye mi çalışıyorsunuz? – geowa4

+0

Aynı işleyicideki birden fazla etkinlik istediği gibi, sanki $ ("a") yapabilirmişsiniz gibi yaşıyor. Canlı (["tıklama", "mouseover", "doubleclick"], function() {// buradakileri yapın –

+0

"$ ('. Myclass') gibi bir şey yapmaya çalışıyorum. Canlı (" tuşa basma bulanıklığı ", function() {..." –

cevap

14

jQuery 1.4.3 itibaren, etkinlik türünün bir harita geçirerek aynı anda birden fazla canlı etkinlik işleyicileri bağlayabilir/işleyici çiftleri:

$("a").live({ 
    click: function() { 
    // do something on click 
    }, 
    mouseover: function() { 
    // do something on mouseover 
    } 
}); 
jQuery 1.7 kaynaktan

http://api.jquery.com/live/

, "on" daha iyidir:

$("a").on({ 
    click: function() { 
     // do something on click 
    }, 
    mouseenter: function() { 
     // do something on mouseenter 
    }, 
    mouseleave: function() { 
     // do something on mouseleave 
    } 
}); 
19

: Ben böyle bir şey yapmak çalışıyorum -

örneği. Örneğin, "canlı bağlamak" şöyle aynı anda Mouseover ve mouseout olaylar olabilir:

$('.hoverme').live('mouseover mouseout', function(event) { 
    if (event.type == 'mouseover') { 
    // do something on mouseover 
    } else { 
    // do something on mouseout 
    } 
}); 
7

jQuery 1.7 bu yöntem tamamen verimli ve elementin durumunda kullanabileceğiniz tüm yeteneklerini topluyor Bence kolayca bunu yapmak için izin bir API ...

$(".myClass").on({ 
    click: function(){ 
     alert("You click on me!"); 
    }, 
    mouseenter: function(){ 
     alert("Do you want click on me?"); 
    } 
}); 

yoktur ... .

bu şekilde bu sayfaya .on() [ jQuery 1.7 API ]

1

deneyin bir göz atın:

("#button").bind("click keyup", function(){ 

// your code goes here 

})