2013-05-31 75 views
0

我想弄明白這一點,可能只是忽略了簡單。 parent1 div正在從搜索動態填充。子div可以附加在兩個父div之間。我有以下幾點:防止父div之間的重複

<div id="parent1"> 
    <div class="child1">some data</div> 
</div> 

<div id="parent2"> 
    <div class="child2">some data</div> 
    <div class="child2">more data</div> 
    <div class="child2">even more data</div> 
</div> 

<script type="text/javascript"> 
$('#parent1 .child1').live('click', function() { 
    if($('#parent2 .child2 > "' + $(this) + '").length) { 
     alert("exists!"); 
    } 
    else 
    { // not exist 
     $(this).remove().appendTo('#parent2'); 
    } 
}); 
</script> 

我試圖避免重複從parent1被追加使用jQuery的單擊事件功能parent2。我嘗試過很多事情,但總是失敗。有任何想法嗎?

感謝, 鮑勃

+4

向我們展示你的點擊()函數 –

+2

份額的小提琴如果你能... – Janak

+0

我希望文字是不同的。如果是的話,與文本進行比較。 –

回答

0

首先,我會推薦使用.on()而不是.live()

我的策略非常簡單:在#parent1中的子div中觸發單擊事件時,迭代並搜索#parent2中的子div中的所有內容。如果找到匹配項,則增加一個變量,如果沒有發現任何內容,則不要做任何事情。

搜索完成後,評估計數。如果計數小於1(即不匹配),則複製#parent1中單擊的div中的文本並追加到#parent2。

$(document).ready(function() { 
    $(document).on('click', '#parent1 > div', function() { 
     var childcontent = $(this).text(), // Get content in clicked div 
      count = 0;      // Start counter 

     // Search through each child in #parent2 
     $('#parent2 > div').each(function() { 
      var target = $(this).text(); 
      if(target.search(new RegExp(childcontent, "i")) < 0) { 
       // No match found in #parent2 
       // Do nothing 
      } else { 
       // Match is found in #parent2 
       count++; 
      } 
     }); 

     // Evaluate count, make decision to append 
     if(count < 1) { 
      $(this).remove().clone().appendTo('#parent2'); 
     } 
    }); 
}); 

這裏是一個工作示例:http://jsfiddle.net/teddyrised/mr2nP/

+0

特里,謝謝!適應我的完整功能,效果很棒! – user1542715

+0

@ user1542715不客氣。我很高興它幫助! – Terry

0

它的最佳實踐,以刪除重複的records尋找未來而不是刪除重複DOMelements

如果你想remove divs比較DIV元素和remove他們的文字。