2016-10-26 9 views
0

これを動的に実行しているので、メインdivが特定のuser-idと一致するかどうかを確認する必要があります。それができたら、それに乗って余分な仕事をしてください。私が何を言っているかを見せてあげましょう。子divに特定のデータ属性が含まれている場合、親divを削除します

<div class="col-md-6 user-card-holder" data-user="2"> 
    <div class="col-xs-2 single-card"> 
    <div class="house" data-house="hearts" data-value="q">Q-hearts</div> 
    </div> 
</div> 

クラス名user-card-holderを持つdiv's多くがあります。私はdata-user属性を持つ特定のものをチェックする必要があります。今、私がチェックしてることです:

のdivがqの値を持つheartsともdata-valueの値でdata-houseが含まれている場合、それは親だとそれが一緒にDIV削除。ここでは、親はdivがクラスsingle-cardを有し、かつuser-card-holder

私はfilter()を使用してみましたがないことを意味します。多分私はここで何か間違っています。

$('.user-card-holder[data-user='+ card.user +'] div div').filter(function(){ 

    var div = $(this).data('house') == card.house && $(this).data('value') == card.number; 
     return div.parent() 


    }).remove(); 

データ属性に基づいて要素を削除するように表示されていますが、親は削除されていません。

+0

".user-card-holder [data-user = '+ card.user +'] div [data-house = hearts] [data-value = q] ''で子を選択し、 '.parent()'で親に返す。 –

答えて

2

私がお勧めしたい:あなたは祖先を検索する場合

// this finds all <div> elements with a 
// 'data-house' attribute equal to 'hearts' and a 
// 'data-value' attribute equal to 'q': 
$('div[data-house=hearts][data-value=q]') 
    // traverses to the parent of the matching element(s): 
    .parent() 
    // removes the parent element(s) from the DOM: 
    .remove(); 

また、動的再読み込みのケースのように思わ除去するための適切な要素(複数可)を、見つけるためにあなたの質問:

// finds <div> element(s) with the class of 'user-card-holder' 
// and the 'data-user' attribute equal to the value of the 'card.user' 
// variable, and finds the descendant <div> element(s) matching 
// the selector used above: 
$('div.user-card-holder[data-user=' + card.user + '] div[data-house=hearts][data-value=q]') 
    // traverses to the parent of the descendant element: 
    .parent() 
    // removes the parent element of that descendant: 
    .remove(); 

参考文献:

0

この機能を試してください。

removeCardFromUser(2); 

function removeCardFromUser(id) { 
    $('.user-card-holder').filter(function(){ 
     var user = $(this).data('user'); 
     if (user === id) { 
      $(this).find('div').filter(function(){ 
       var house = $(this).data('house'); 
       var value = $(this).data('value'); 
       if (house === 'hearts' && value === 'q') { 
        $(this).parent().remove(); 
       } 
      }); 
     } 
    }); 
} 

それはクラスのユーザーカードホルダ 'とデータユーザー= {所与ID}とDIVを探し、次いでその子孫を探しdata-house = 'hearts'とdata-value = 'q'を削除し、その親を削除します。

ダビデの答えは十分でしょう! :)

関連する問題