2016-04-08 6 views
0

Ben DOM bir jQuery grup bazı seçici eşleşen düğümleri topladığınızda varsayalım ve seçici o eşleşen düğümlerin diğer bazı maçların soyundan, örneğin olabileceğini mümkündür şekildedir:Diğer üyelerin soyundan gelen jQuery grubunun öğelerini nasıl kaldırabilirim?

<div class="row"> 
    <!-- ... --> 
    <div class="row"><!-- ... --></div> 
    <!-- ... --> 
</div> 
<div class="row"> 
    <!-- ... --> 
    <div class="row"> 
     <!-- ... --> 
     <div class="row"><!-- ... --></div> 
    </div> 
    <div class="row"><!-- ... --></div> 
    <!-- ... --> 
</div> 
$rows = $('.row'); 

Şimdi yapacağım eylemin, her bir düğümün tüm alt ağacını etkileyeceğini ve herhangi bir DOM düğümüne en çok bir defada hareket ettiğimi bilmem gerektiğini varsayalım. Grubumun, aynı grubun diğer üyelerinin soyundan gelen tüm unsurlarını nasıl kaldırırım?

var $rows = $('.row'); 
$rows = $rows.not($rows.find($rows)); 

$elems.find($elems)$elems bir veya daha fazla üye torunları $elems tüm üyelerini döndürür:

+0

Üst düzey ".row" öğeleri ortak bir üst öğenin soyundan geliyorsa, doğrudan alt öğe seçiciyi kullanın: '$ ('# parent> .row')' –

+0

Elbette, bazı durumlarda işe yarayabilir, ancak DOM'ın daha çok dağınık ve öngörülemez olduğu durumlarda çalışacak daha genel bir çözümle daha fazla ilgilenmek. –

cevap

0

Bunu gerçekleştirmek için saptadığımız en basit ve en temiz yolu $.fn.not() ve $.fn.find() davranışlarını birleştirmektir (elemanın kendisi dahil değil, o yüzden endişelenmeyin). $elems.not(group), yalnızca group'da olmayan $elems üyelerini döndürür. Birlikte, bu, diğer üyelerin çocukları olan $elems'un tüm üyelerini bulacaktır, daha sonra her şeyi geri döndürecektir.

İlgili konular