2012-07-04 20 views
13

Seçiciye değil .sistem kullanın:JQuery() ile bu sözdizimi ile() fonksiyonunu .sistem kullanıyorum

$(".schemaTab").on("click", ".schema", function() {}) 

yerine .live() Ben dinamik .schema div'leri ekliyorum çünkü. Bu div'ler bu kodu vardır:

<div class="schema" id="SCH_16"> 
    <img src="Img/btnRemove.png" class="ikona SCH_Remove" alt="Smazat" title="Smazat"> 
</div> 

Ama kendi üst div tıklama olaydan img dışlamak gerekir, bu nedenle herhangi bir fikrin nasıl yapılacağını?

Denedim:

$(".schemaTab").not(".SCH_Remove").on("click", ".schema", function() {}) 

... ama işe yaramadı ve ben .on() kodu

cevap

16

.not() çalışmaz etkinliğin uygulanıp uygulanmayacağı.

Seçtiğiniz hesaba katılıyorum ve daha sonra da filtrelenir.

API: http://api.jquery.com/on/

bu deneyebilirsiniz: gibi pek değil Selecter:

$(".schemaTab").on("click", ".schema", function (e) { 

    if (!$(e.target).is(".schemaTab")) { 
     // not stuff in here 
    } 

}); 
+0

'bu, her zaman kontrol edilen öğeye bağlı olacaktır; Bence e.target demek istiyorsun. – Ryan

+0

@minitech Mesajınız için teşekkürler ve ++ 1, şerefe::) –

3

.not() nasıl ekleneceğini bilmiyorum bu etmektir yapmanın bütün mesele Henüz henüz .sch_Remove öğelerini içeren DOM'daki öğelerin olaylarını ele al. O img tıklandığında tetiklenmesini Üst tıklama eylemini engellemek için

$(".schemaTab").on("click", ".schema", function() {}) 

aşağıdaki (yukarıdaki fonksiyona ek olarak) ekleyin.

$(".schemaTab").on("click", ".SCH_Remove", function() { return false; }) 

Bu ebeveyne çoğaltım ve onclick yöntemi tetiklemesini 'click' olayı önlemek ve varsayılan tıklama davranışını engelleyecektir.

+0

Sadece şunu biliyorsunuz, çünkü img şu anda divınızdaki tek şey bu iki kod satırı aslında birbirini iptal ediyor. Başka şeyler ekleyeceğinizi mi sanıyorum? aksi halde yaklaşımınızı yeniden düşünmeniz gerekebilir – nbrooks

4

Sadece hedef aynı olduğundan emin olun:

$('.schemaTab').on('click', '.schema', function(e) { 
    if(!$(e.target).is('.schema')) { 
     return; 
    } 

    // Do stuff 
}); 
on yöntem jQuery nesnesi öğelerin seçili kümesine olay işleyicileri ekler ve test etmek için orijinal seçici kullandığı için
3

Sadece bu sorun koştu ve kullanılan

$('.schemaTab').on('click', '.schema:not(.booga)', function(event) { 

// Eğlence burada });

jQuery 1.11.0 kullanıyorum, bunun ne kadar geri gittiğini bilmiyorum.

+0

bu sorunun cevabı görünüyor –

İlgili konular