如何使用jquery通过ID删除多个href链接?

3

我在移除具有相同ID的多个href链接时遇到了问题。这是我的代码片段:

    $('.delblk').click(function(e) {
        e.preventDefault();

        var id = $(this).attr('id').substr(7);

        $.getJSON("../ajax_blocked.php?op=delete&id="+id, function(data) {
        if (data) {

            $("#delblk_"+id).each(function() {
                $(this).remove();
            });
        }
    });

我的HTML长这样:

<a href="sent.php" id="delblk_7" class="delblk" ><span class="label label-important">Unblock</span></a>
<a href="sent.php" id="delblk_7" class="delblk" ><span class="label label-important">Unblock</span></a>
<a href="sent.php" id="delblk_8" class="delblk" ><span class="label label-important">Unblock</span></a>

它只删除了第一个href链接而没有删除两个。我错过了什么吗?
2个回答

2

描述

问题在于,一个id必须在您的文档中是唯一的,使用class属性代替。

因此,您不能使用id (#)选择器。

但是,您可以使用Attribute Equals Selector来遍历您的元素,请查看我的示例以及这个jsFiddle演示

w3c id属性为HTML元素指定唯一的id(id属性值必须在HTML文档中是唯一的)。

示例

$("a[id='delblk_"+id+"']").each(function() {
    // ...
});

更多信息


我交换了类和ID,现在一切都正常了...谢谢! - Paul
你的选择器有错误。$("a[id='delblk_'+id]") => $("a[id=delblk_"+id+"]") - gdoron

2

永远不要使用相同的id来表示多个元素,使用class代替id

每个id值在文档中只能使用一次。如果有多个元素被分配了相同的ID,则使用该ID的查询仅会选择DOM中的第一个匹配元素。但是不应依赖这种行为;包含多个使用相同ID的元素的文档是无效的。

文档

你和你的兄弟、父亲或其他人是否拥有相同的id呢?
每个HTML页面就像一个国家,而id必须是唯一的......


谢谢。如果我将我的类更改为包含ID,那么如何在每个类名唯一且不知道类的ID部分的情况下触发点击事件呢? - Paul
@Paul。目前的问题是什么? - gdoron
@Paul 你可以像这样选择一个类 $('.class_name').do(在这里执行你的操作) - aki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接