Jquery循环遍历列表并替换

时间:2011-07-05 17:05:48

标签: jquery

我正在尝试找到一种使用Jquery循环遍历列表的方法,如果某个类的文本为“Not Complete”,则用动画gif替换“Not Complete”字样。

以下是清单:

<ul>
<li class="name">Name</li>
<li class="job">This</li>
<li class="status">Not Complete</li>
</ul>

列表通过php脚本填充。

我从这里的另一个例子中厌倦了这个,但是无法让它起作用:

function change(){
if($('.status').text=='Not Complete')
{$('.status').replaceWith('<img src='loading.gif' />');}
else{}
}

$(function() {
  $(".status").each(change);
});

我对如何实现这一点有任何想法?

6 个答案:

答案 0 :(得分:1)

您忘了拨打text()功能:

$('.status').text() == ...

您的代码会检查函数本身是否等于'Not Complete'

答案 1 :(得分:1)

如果.status元素只有短文本片段(不长文字段落),则使用contains-selector[docs]应该是安全的。

$('li.status:contains(Not Complete)').html("<img src='loading.gif' />");

请注意,我在HTML中替换了引号。您只使用了单引号,它过早地终止了字符串。

我还添加了element-selector[docs],因为:contains()不是标准选择器。这会加快速度,因为现在它只需要查看<li>元素。


工作示例: http://jsfiddle.net/PahVB/1/

答案 2 :(得分:0)

如果列表是由PHP填充的,为什么不首先让PHP把它放在那里?

但是如果你坚持使用jQuery,它应该是text()==,而不仅仅是text ==。

答案 3 :(得分:0)

嗯 - 当你正在运行一个循环时,你需要稍微重写一下这个,但是然后在循环中用if($('。status')

再次查询集合

试试这个:

 $(function() {
      $(".status").each(function(){
           if($(this).text() == 'Not Complete'){
              $(this).replaceWith('<img src='loading.gif' />');
      });
 });

答案 4 :(得分:0)

<script>
$(".status").each(function()
{
    if($(this).text() == "Not Complete")
    {
        $(this).html("<img src='loading.gif' />");
    }
});

</script>

也许试一试

答案 5 :(得分:0)

每个函数通常传递一个参数,用于索引和正在迭代的数组的对象。在您的函数中,每次都重新选择数组。尝试类似:

$(".status").each(function(index, value) {  
    if ($(this).text()=="Not Complete")  
    {  
        $(this).replaceWith($("<img />").attr("src","loading.gif"));  
    }  
}

这是基于每个函数http://api.jquery.com/each/

的jQuery文档