0

我试图弄清楚这一点,可能只是忽略了简单的事情。parent1 div 正在从搜索中动态填充。子 div 可以附加在 2 个父 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>

我正在尝试使用 jquery click 事件函数防止将重复项从 parent1 附加到 parent2。我尝试了很多事情,但总是失败。有任何想法吗?

谢谢,鲍勃

4

2 回答 2

0

records删除搜索中的重复项而不是删除重复项的最佳做法DOM elements

如果你想要div 比较元素remove内的文本和它们。DIVremove

于 2013-05-31T11:33:31.387 回答
0

首先,我建议使用.on()over .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/

于 2013-05-31T12:05:40.787 回答