2011-07-05 179 views
0

我試圖找到一種方式來循環使用jquery的列表,如果某個類有文本「不完整」,用動畫gif替換單詞「不完整」。jquery循環遍歷列表並替換

這裏的名單:

<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); 
}); 

任何想法的?

回答

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/

1

你忘了打電話的功能text()

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

你的代碼檢查功能本身是否等於'Not Complete'

0

如果該列表是由PHP居住,爲什麼不乾脆讓PHP把它放在那裏擺在首位?

但是,如果你堅持使用jQuery,它應該是text()==,而不僅僅是文本==。

0

嗯 - 你需要重寫這一點了,你正在運行一個循環,但隨後內循環使用,如果($(」狀態。)

試試這再次查詢集合:

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

</script> 

也許試試這個

0

的每個函數通常通行證你遍歷數組的索引和對象的參數。在你的函數,你重新選擇每次陣列。嘗試一些東西一樣:

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

這是基於jQuery的文檔的每個功能http://api.jquery.com/each/