2011-04-28 41 views
0

我一直在教自己的JS和JQuery,我仍然努力如何有效地使用$循環通過一個對象並提取我想要的信息。jQuery循環遍歷對象並尋找標題,但跳過其他人

我有一個表格有一個標誌圖標和一個描述我想放在行尾的標題。但是,有時候我會忽略其他圖標。所以我在url中查找「flag」,如果存在,我將第二個到最後一個單元格的innerHTML設置爲'title'。

正如你可以在下面看到的,我不得不創建一個減量VAR y,以防止跳到具有「標題」的下一行,如果我遇到非標誌圖標。

我希望此行與「冠軍」,這是位置被追加:

<td>11:44pm</td><td><a href="/stats/visitors?site_id=66351439&amp;date=2011-04-27&amp;country=the+united+states"></a></td><td> <a class="custom" title="Comcast Cable" href="/stats/visitors?site_id=66351439&amp;date=2011-04-27&amp;ip_address=75.70.103.23">Comcast Cable</a></td><td><a href="/stats/visitors-actions?site_id=66351439&amp;date=2011-04-27&amp;session_id=228613269">1 action</a></td><td>10s</td><td width="100%"> &nbsp; </td><td></td> 

看起來像這樣:

<td>11:44pm</td><td><a href="/stats/visitors?site_id=66351439&amp;date=2011-04-27&amp;country=the+united+states"></a></td><td> <a class="custom" title="Comcast Cable" href="/stats/visitors?site_id=66351439&amp;date=2011-04-27&amp;ip_address=75.70.103.23">Comcast Cable</a></td><td><a href="/stats/visitors-actions?site_id=66351439&amp;date=2011-04-27&amp;session_id=228613269">1 action</a></td><td>10s</td><td width="100%">Aurora, CO, USA</td><td></td> 

所以我的問題 - 什麼是更好的方式做整個過程。這是一個鏈接到jsfiddle - http://jsfiddle.net/ukJxH/78/ - 在3:47你可以看到一個非標誌圖標。

var x = $('.tableborder tr img'); 
y = 1; 
for (i = 0; i < x.length; i++) { 
    var flagg = x[i].src; 
    var pattn = /flag/gi; 
    var loca = x[i].title; 

    if (flagg.match(pattn) == "flag") { 
     //$('td:nth-child(6)')[i + 14 + y].innerHTML = loca; 
     $('#main :nth-child(i) td:nth-child(6)')[i].innerHTML = loc } else { 
    y = y - 1; 
} 

}

+0

我見每個項目上的標誌圖標。哪裏不對? (在你的jsfiddle中,css有很多非CSS代碼,比如html,js和來自螢火蟲的警告) – jotapdiez 2011-04-28 16:45:09

+0

我的解決方案好像太複雜了。主要問題是,有非標誌圖標,我必須跳過,我通過查看src爲「標誌」,如果標誌然後我設置內部HTML爲'標題'。 – 7null 2011-04-28 16:57:42

回答

0

對不起,但我不知道我理解你的問題太好了。然而,以下的選擇會給你的表

$('.tableborder tr img[src*="flag"]').each(function(){ 
    $(this) 
    .closest('td') 
    .nextAll('td:last') 
    .html('Title from image : ' + $(this).attr('title')); 
}); 

這應該給你一個機會來遍歷DOM,並在得到你所需要的所有標誌

現場演示:http://jsfiddle.net/jomanlk/ukJxH/87/

+0

這縮短了一點 - 謝謝。 BUt什麼是最佳方式,然後將標題放入引用列中的表格末尾的單元格中? – 7null 2011-04-28 17:22:07

+0

@ 7null,哦,你想要什麼?我更新了我的代碼。一旦它找到一個圖像,它就會沿着DOM樹上到達到TD,然後它會查找最後一個TD,並將圖像的標題放在最後一個單元格中。希望這能解決你的問題 – JohnP 2011-04-28 17:27:54

+0

這很完美 - 謝謝。我通常可以通過它破解我的方式,但我現在想學習確定最佳/優雅的方法。可能很難做到,因爲這不是我的日常工作,而更像是一種愛好。 – 7null 2011-04-28 17:36:03

0

你可以嘗試使用each

例如:

$(".tableborder tr img").each(function() { 
    var src = $(this).attr("src"); 
    var alt = $(this).attr("alt"); 
}); 
0

你也可以使用一個CSS類只選擇IMG標籤你有興趣:

$(".tableborder tr img.flagImg").each(function() { 
    ... 
}); 

HTML會然後是

<img title="Arvada, CO, USA" class="flagImg" src="http://static.getclicky.com/media/flags/us.gif">