我正在尝试找到一种使用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);
});
我对如何实现这一点有任何想法?
答案 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>
元素。
答案 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文档