在.each()中使用$(this)

时间:2016-11-29 10:36:53

标签: javascript jquery html

我有一系列以HTML格式列出的元素

我正在尝试使用类href为每个div获取wsite-com-category-product-wrap的值,然后使用此值插入一个具有相同href的新按钮。

我当前的代码是将所有链接(对于具有类.wsite-com-category-product-wrap的项目)插入其自身,这意味着每个元素现在只有大约10个链接,而不仅仅是一个。

我写的代码是这样做的:

$(".wsite-com-category-product-wrap").each(function() {

  var link = $(this).find("a").attr("href");
  $("<a href=" + link + " class='custom-category-button'>Test</a>").insertAfter(".wsite-com-product-price");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="wsite-com-category-product-wrap">
  <a href="#" class="link">Link content</a>
  <div>more divs</div>
</div>

2 个答案:

答案 0 :(得分:0)

我发现使用insertAfter我需要添加一些东西,确保它只被添加到$(this)

我使用了一个新变量insertHere来简化:

$(".wsite-com-category-product-wrap").each(function() {

    var link = $( this ).find("a").attr("href");

    var insertHere = $(this).find(".wsite-com-product-price");
    $( "<a href=" + link +" class='custom-category-button'>Test</a>" ).insertAfter( insertHere );
});

答案 1 :(得分:0)

您可以将jquery对象与.insertAfter一起使用,而不仅仅是字符串选择器。

所以,改变一下:

$("<a href=" + link + " class='custom-category-button'>Test</a>")
    .insertAfter(".wsite-com-product-price");

为:

$("<a href=" + link + " class='custom-category-button'>Test</a>")
    .insertAfter($(".wsite-com-product-price", this));