2013-06-03 33 views
8

Bir nesnede bublebleble özel jQuery olayı tetiklemek istiyorum. Köpürmeyi önlemek için false veya stopPropagation'ı kullanabileceğimizi biliyorum. Bilmek istediğim, özel bir etkinliği tetikleyebilir ve varsayılan olarak bunu işaretlemediğini belirleyebilir. Köpürme olmadan özel bir jQuery olayı tetikleme

Bu

şimdi

 $(".abc").on("change", function() { 
      var e = new $.Event("datachange"); 
      $(this).trigger(e) 
     }); 

yukarıdaki #abc üzerinde dataChange olayı tetikler ve olay tamamen yukarı kabarcıklar Ben koddur. Bunu istemiyorum. Bunu kullanarak bunu başarabilirim.

Bu triggerHandler'ın benzer bir şey yaptığını okudum, ancak yalnızca ilk eşleşen öğe için.

Bunu başarmanın daha iyi bir yolu var mı?

+0

Etkinlik işleyicinizde 'e.stopPropagation()' ile ilgili kötü bir şey nedir? – crush

+0

@crush Olası bir olay işleyicisi olmadığı ve olayın köpürme olacağı ve bu nesne için değil bir işleyici tarafından yakalanabileceği olasıdır. – Arun

cevap

12

triggerHandler()'un, yalnızca kümedeki ilk öğe için geçerli olduğunu, ancak $(this) ile oluşturduğunuz kümenin yalnızca bir öğe içerdiğinden sorun olmaması gerekir.

nedenle, güvenli bir şekilde yazabilirsiniz:

$(".abc").on("change", function() { 
    $(this).triggerHandler("datachange"); 
}); 

O yol, datachange olay belge ağacı olmaz kabarcık kadar.

İlgili konular