0

我试图弄清楚当用户单击一个按钮时如何在两个不同的“ul”中找到具有匹配文本的“li”项目,以便将它们全部删除。该按钮附加到每个“li”,我可以成功地从中获取文本并删除原始项目。'li' 是可排序的,用户可以添加更多,所以这不能用 'li' 的位置来完成。

现在我有了这个(我已经删除了一些内容以使其更易于理解):

Javascript:

$("li")
    .prepend("<span class='ui-icon'></span>")    

$(".ui-icon")
    .click(function() {
        var itemText = $(this).closest("li").text();

        $(this).closest("li").fadeOut(200, function() {
            $(this).remove();
        }); 

        $("li:contains(itemText)").remove(); //the part I'm having trouble with 
    })

HTML:

<ul id="items">
    <li>
        <h3 id="title">Title1</h3>
        <p id="body">Body1</p>
    </li>
    <li>
        <h3 id="title">Title2</h3>
        <p id="body">Body2</p>
    </li>
    <li>
        <h3 id="title">Title3</h3>
        <p id="body">Body3</p>
    </li>
    <li>
        <h3 id="title">Title4</h3>
        <p id="body">Body4</p>
    </li>
</ul>
<ul id="favs">
    <li>
        <h3 id="title">Title2</h3>
        <p id="body">Body2</p>
    </li>
    <li>
        <h3 id="title">Title3</h3>
        <p id="body">Body3</p>
    </li>
    <li>
        <h3 id="title">Title1</h3>
        <p id="body">Body1</p>
    </li>
    <li>
        <h3 id="title">Title4</h3>
        <p id="body">Body4</p>
    </li>
</ul>
4

3 回答 3

2
$(".ui-icon")
    .click(function() {
        var item = item.closest("li");
        var itemText = item.text();
        var parentUL = item.closest("ul");

        item.fadeOut(200, function() {
            item.remove();
        }); 

        parentUL.siblings('ul').find("li:contains(" + itemText + ")").remove(); //the part I'm having trouble with 
    })

我想这就是你要找的。这样可以确保删除除您要淡出的那个之外的任何内容。

顺便说一句,ids 应该是唯一的。

于 2013-08-12T18:55:19.907 回答
1

也许这一行:

$("li:contains(itemText)").remove()

应该:

$("li:contains(" + itemText + ")").remove()

jQuery 选择器没有关于范围内变量的上下文。选择器是字符串,因此您需要从 itemText 变量构建一个字符串。

于 2013-08-12T18:57:18.933 回答
0

您正在搜索li包含字符串“itemText”而不是 itemText 变量值的元素。

改变

 $("li:contains(itemText)").remove();

 $("li:contains(" + itemText + ")").remove();
于 2013-08-12T18:55:18.297 回答