查看子项是否已存在于不同的选项卡中

时间:2011-10-18 12:47:01

标签: jquery html

我有两个标签:

  • 在第一个标签中,我有一个固定的项目列表。每个项目都可以添加到其他选项卡中。
  • 第二个标签包含一个自定义项目列表,源自第一个标签。
  • 第二个标签应只包含具有唯一ID的项目
  • 不应该多次将同一项目从tab1添加到tab2。

添加和删除机制有效,但是检查项目是否已添加到tab2的检查不起作用。现在我只是提醒项目是否存在。

如果检查是在另一个方向进行,检查tab1中是否存在某个项目似乎工作正常,这对我来说很奇怪。

有人可以建议改进我的代码吗?

编辑: 问题是所做的检查总是返回“否”。它需要改进,我没有想法。

HTML:

<div class="demo">
    <div id="tabs">
        <ul>
            <li><a href="#tabs-1">Bands</a></li>
            <li><a href="#tabs-2">My bands</a></li>
        </ul>
        <div id="tabs-1">
            <ul id="sortable1" class="bandList">

                <li id="6" class="band">
                    <div class="text">Band 1</div>
                    <div class="actions">
                        <a href="#" class="add">Add</a>
                        <a href="#" class="remove">Remove</a>
                    </div>
                </li>

            </ul>
        </div>
        <div id="tabs-2">
            <ul id="sortable2" class="bandList">

                <li id="9" class="band">
                    <div class="text">Band 2</div>
                    <div class="actions">
                        <a href="#" class="add">Add</a>
                        <a href="#" class="remove">Remove</a>
                    </div>
                </li>

            </ul>
        </div>
    </div>
</div>

CSS:

.band .actions a.add{
    background:url("../img/edit.png") no-repeat center center;
}

.band .actions a.remove{
    background:url("../img/delete.png") no-repeat center center;
}

JQuery的:

// Listening for a click on an add button
$('.band a.add').live('click',function(){
    var cur_id = $(this).parent().parent().attr("id");

    var tmp = ($('#sortable2').has('#' + cur_id).length ? "Yes" : "No")
    alert(tmp);

    $('#sortable2').append($('#'+cur_id).clone());
});


// Listening for a click on a delete button (original)
$('.band a.remove').live('click',function(){
    var cur_id = $(this).parent().parent().attr("id");

    $('#sortable2 > li').remove('#' + cur_id);
});

2 个答案:

答案 0 :(得分:0)

if (tmp == "No") { $('#sortable2').append($('#'+cur_id).clone()) }

答案 1 :(得分:0)

这一行:

($('#sortable2').has('#' + cur_id).length ? "Yes" : "No");

始终返回"No"。如果您返回length,则会始终返回Yes。我无法使用has,但它正在使用children返回正确的结果(我认为)。它只会走一层。