用jQuery替换列表中的每个元素

时间:2016-11-02 00:52:43

标签: jquery each

尝试用<span>(x)</span>替换列表元素中的(x)但我无法正确,它复制了第一个元素

我的代码是:

jQuery(document).ready(function($){
 "use strict";
 $(".widget_categories li").each(function(){  
  $(this).html($(".widget_categories li").html().replace(/(\([^)]+\))/, "<span>$1</span>"));
 });
});

1 个答案:

答案 0 :(得分:1)

当您尝试替换html时,您可能希望获得单个元素,而不是所有元素。而不是

$(this).html($(".widget_categories li").html().replace(/(\([^)]+\))/, "<span>$1</span>"));

更改为

$(this).html($(this).html().replace(/(\([^)]+\))/, "<span>$1</span>"));

示例(请注意,我转发span标记只是为了更容易查看结果)

$(function(){
  $(".widget_categories li").each(function () {
    var newValue = $(this).html().replace(/(\([^)]+\))/, "&lt;span&gt;$1&lt;/span&gt;");
    $(this).html(newValue);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul class="widget_categories">
  <li>foo (x) bar</li>
</ul>