点击每个重复href的删除链接?

时间:2014-08-17 07:41:06

标签: javascript jquery

在以下代码中,我有一些带有<a>标记的div,每个标记都包含一个/User.aspx?ID=[some ID]的href。我希望点击href中具有重复ID的任何div的父级父级的父级下的Delete <a>标记。

这是我的代码:

var z = 0;
var info = {};
$("a:contains('Delete')").each(function() { 
    z++;
    var x = $(this).parent().parent().parent().find("span.UserLink a").attr("href");
    var id = x.replace("/User.aspx?ID=", "");
    info[z] = id;
    console.log(info[z]);

});
var uniqueIds = {};
$.each(info, function(i, el){
    if($.inArray(el, uniqueIds) === -1) { uniqueIds.push(el) }
    else { $("html").find("span.UserLink a[href='/User.aspx?ID='"+info[i]+"']").parent().parent().parent().find("a:contains('Delete')").click() }
});

1 个答案:

答案 0 :(得分:1)

使用数组,而不是对象

也许只是一个错字,我想你想使用infouniqueIds的数组

var info = [];
var uniqueIds = [];

jQuery.each已经提供索引

您不需要z

$("a:contains('Delete')").each(function(index) {
    var x = $(this).parent().parent().parent().find("span.UserLink a").attr("href");
    var id = x.replace("/User.aspx?ID=", "");
    info[index] = id;
    console.log(info[z]);
});

使用有意义的名称

xinfo不是很好的名字,您可以尝试(例如)userLinkHreffoundIds

您可以将删除按钮存储在第一个循环中,并在第二个循环中使用它

var foundDeleteLinks = [];
$("a:contains('Delete')").each(function() {
    var $deleteLink = $(this);
    var userLinkHref = $deleteLink.parent().parent().parent().find("span.UserLink a").attr("href");
    var id = userLinkHref.replace("/User.aspx?ID=", "");
    foundDeleteLinks.push({id:id,$deleteLink:$deleteLink});
    console.log(id);
});
var uniqueIds = [];
$.each(foundDeleteLinks, function(i, deleteLink){
    var id = deleteLink.id;
    if($.inArray(id, uniqueIds) === -1) { uniqueIds.push(id) }
    else {
        deleteLink.$deleteLink.click();
    }
});

您可以在一个循环

中完成
var foundIds = [];
$("a:contains('Delete')").each(function() {
    var $deleteLink = $(this);
    var userLinkHref = $deleteLink.parent().parent().parent().find("span.UserLink a").attr("href");
    var id = userLinkHref.replace("/User.aspx?ID=", "");
    if($.inArray(id, foundIds) === -1) { foundIds.push(id) }
    else { $deleteLink.click(); }
});

我希望有足够的帮助来找到你的问题。