Javascript 使用jquery附加父标记的属性

Javascript 使用jquery附加父标记的属性,javascript,jquery,html,Javascript,Jquery,Html,我有一些HTML如下所示: <div> <strong> <a href="link.php?category=1&link=apple"> <span>string</span> </a> </strong> </div> <div> <strong> <a hre

我有一些HTML如下所示:

<div>
    <strong>
        <a href="link.php?category=1&link=apple">
            <span>string</span>
        </a>
    </strong>
</div>

<div>
    <strong>
        <a href="link.php?category=2&link=banana">
            <span>string</span>
        </a>
    </strong>
</div>





我想在每个div中添加一个链接,该div包含一个带有“string”的span。该链接的id为包含跨度的链接的href属性的link参数,例如:

<div>
    <strong>
        <a href="link.php?category=1&link=apple">
            <span>string</span>
        </a>
    </strong>
    <a class="details" id="apple_details">Show Details +</a>
</div>

<div>
    <strong>
        <a href="link.php?category=2&link=banana">
            <span>string</span>
        </a>
    </strong>
    <a class="details" id="banana_details">Show Details +</a>
</div>




显示细节+
到目前为止,我得到的是:

$("span:contains('string')").parent().parent().parent().append('<a class="details" id="details">Show Details +</a>');
$(“span:contains('string')).parent().parent().parent().append('Show Details+');
如何获取链接的href属性?

使用
.each()
循环所有跨度,获取父级属性,然后附加到DIV

$("span:contains('string')").each(function() {
    var href=$(this).parent().attr("href");
    var link = href.match(/&link=([^&]+)/)[1];
    $(this).closest("div").append($("<a>", {
        "class": "details",
        id: link + "_details",
        text: "Show Details"
    }));
});
$(“span:contains('string'))。每个(函数(){
var href=$(this.parent().attr(“href”);
var link=href.match(/&link=([^&]+)/)[1];
$(this).closest(“div”).append($(“”){
“类”:“详细信息”,
id:link+“\u详细信息”,
文本:“显示详细信息”
}));
});
使用
.each()
在所有跨度上循环,获取父级的属性,然后附加到DIV

$("span:contains('string')").each(function() {
    var href=$(this).parent().attr("href");
    var link = href.match(/&link=([^&]+)/)[1];
    $(this).closest("div").append($("<a>", {
        "class": "details",
        id: link + "_details",
        text: "Show Details"
    }));
});
$(“span:contains('string'))。每个(函数(){
var href=$(this.parent().attr(“href”);
var link=href.match(/&link=([^&]+)/)[1];
$(this).closest(“div”).append($(“”){
“类”:“详细信息”,
id:link+“\u详细信息”,
文本:“显示详细信息”
}));
});
$(“a[href*='link='])。每个(函数(){
if($(this).text()!=“string”)返回;//不执行任何操作。
var id=$(this.attr(“href”).match(/[?&]link=([^&]+)/)[1];
if(id)$(this).closest(“div”).append(`
$(“a[href*='link='])。每个(函数(){
if($(this).text()!=“string”)返回;//不执行任何操作。
var id=$(this.attr(“href”).match(/[?&]link=([^&]+)/)[1];
if(id)$(this).closest(“div”).append(`

这对我有效,所以你在这里设置{id},然后如果它存在,将它传递给append?@pg。完全正确。额外的预防措施。如果
.match
失败,就不要执行append操作。这对我有效,所以你设置了{id}这里,然后如果它存在,将它传递给append?@pg。完全正确。额外的预防措施。如果
.match
失败,则不执行append操作。修复了错误。@RokoC.Buljan 1,6)修复;2-4,7)这是问题规范的问题,我假设他的HTML是一致的;5)我从未听说过这一点,我希望jQuery能够处理此类兼容性问题。@RokoC.Buljan 1,6)已修复;2-4,7)这是问题规范的问题,我假设他的HTML是一致的;5)我从未听说过这一点,我希望jQuery能够处理此类兼容性问题