在元素的内容之后jquery检查字符的出现

时间:2011-03-22 10:51:08

标签: jquery regex string

我有这个:

<div class="people">
 <a class="deleteUser"> x </a> <a class="userLink"> John Malkovich </a> , 
 <a class="deleteUser"> x </a> <a class="userLink"> Adrian Mutu </a>
</div>

点击“deleteUser”链接,我希望能够:

- 隐藏相同的链接

- 删除相对“userLink”链接

- 并且只有在“userLink”链接修剪后才有任何昏迷(这是我需要帮助的地方!)

如果在元素内容之后出现昏迷,我如何检查jquery?

感谢

卢卡

4 个答案:

答案 0 :(得分:3)

试试这个:

$(".deleteUser").click(function() {
    var index = ($(this).index()+1)/2;
    $(".people").contents().filter(function() {
        return this.nodeType == 3 && $.trim($(this).text()) == ",";
    }).eq(index).remove();
    $(this).next(".userLink").remove().end().remove();
});

请参阅jsFiddle

答案 1 :(得分:1)

根据您的原始标记,您可以使用.contents().filter()查找最后一个,

的文本节点

小更新,用于解决中间逗号问题并删除逗号。

$(".deleteUser").click(function() {
    var a = $(this).index()/2;
    $(this).next(".userLink").remove().end().remove();
    $(".people").contents().filter(function() {
        return this.nodeType == 3 && $.trim($(this).text()) == ",";
    }).eq(a - 1).remove();
});

注意:如果您可以调整标记以将元素包装在另一个元素中,这将更容易实现。

jsfiddle上的代码示例。

答案 2 :(得分:0)

我会将两个<a>标记放在容器中:

<div class="people">
 <div class='person' id='person1_container'><a class="deleteUser"> x </a> <a class="userLink">John Malkovich</a>,</div>
 <div class='person' id='person1_container'><a class="deleteUser"> x </a> <a class="userLink"> Adrian Mutu </a></div>
</div>

然后你可以隐藏整个容器:

<div class="people">
 <div class='person' id='person1_container'><a class="deleteUser" onclick="document.getElementById('person1_container').style.display = 'none';"> x </a> <a class="userLink">John Malkovich</a>,</div>
 <div class='person' id='person2_container'><a class="deleteUser" onclick="document.getElementById('person2_container').style.display = 'none';"> x </a> <a class="userLink"> Adrian Mutu </a></div>
</div>

答案 3 :(得分:0)

我会重组您的数据:

<div class="people">
    <div class="user"><a class="delete"> x </a> John Malkovitch,</div>
    <div class="user"><a class="delete"> x </a> Adrian Mutu</div>
</div>

然后你可以使用一些代码来删除整个div.user:

$('div.people div.user a.delete').click(function(evt) {
    $(evt.target).closest('div.user').hide();
});