如何将每个元素包装在带有属性的标签中?

时间:2019-06-10 21:01:15

标签: jquery html

我正在尝试将每个元素包装在锚定标记中,但是我不确定如何做到这一点。

我试图使用.each来运行一个函数,该函数使用.wrap来包装元素。

这就是我所做的:

<div class="product-icon-container">
    <div class="product-icon product-share"><i class="fas fa-link"></i>Share</div>
    <div class="product-icon product-heart"><i class="far fa-heart"></i>Save</div>
</div>

<input type="hidden" class="post-url" value="<?php the_permalink() ?>">`

var postUrl = $(".post-url").val()

$(".post-url").each(function(){
    $(".product-share").wrap('a href="' + postUrl + '"></a>');
});

发生的事情是,在每个函数运行时,它包装了所有元素多次。

1 个答案:

答案 0 :(得分:0)

当然,您为每个.post-url调用.wrap()(例如10次),而没有指定要使用的元素(类返回一个集合,而不是单个元素)。

在jQuery中不那么强大,但应该是st。像这样:

$(".post-url").each(function(){
    $(this).prev('.product-icon-container').find('.product-share').wrap('<a href="' + $(this).val() + '"></a>');
                                                                         ^^
});

在您的postUrl中,它始终是相同的值,您不必为每个.post-url元素都进行更改。

https://jsfiddle.net/rgdp9zLe/