2014-05-24 110 views
0

請看一看這個FIDDLE。你將如何確保它僅匹配的Sodium出現在表格單元格的行的開始出現,例如:比賽的話

<td>Sodium</td><td>Sodium (from Kitchen Salt)</td>

但不

<td>Vitamin sodium</td><td>Fish Sodium</td>

我的嘗試

`var find_Sodium = /^Sodium/ 
alert($('.'+title+'table').find('td:contains(find_Sodium)').next().html());` 

不起作用。

$.ajax({ 
    url: "url.json", 
    success: function (data) { 

     $(data.query.results.json.json).each(function (index, item) {  

      var title = item.title; 
      var table = item.table; 
      if (table.indexOf("Sodium") >= 0) { 

       $('.'+ title+'table').html(''+table+''); 
       var find_Sodium = /^Sodium/; 
       alert($('.'+title+'table').find('td:contains(find_Sodium)').next().html()); 

      } 
     }); 
    }, 
    error: function() {} 
}); 

表結構:

<table class="tablesorter"> 
<thead> 
<tr> 
<td>Ingredient</td> 
<td>Amount</td> 
<td>% Daily Value**</td> 
</tr> 
</thead> 
<tbody> 
<tr> 
<td>Calories</td> 
<td>10</td> 
<td></td> 
</tr> 
<tr> 
<td>Sodium</td> 
<td>2g</td> 
<td>&lt;1</td> 
</tr> 
<tr> 
<td>Vitamin C</td> 
<td>110mg</td> 
<td>4</td> 
</tr> 
<tr> 
<td>Potassium sodium</td> 
<td>235mg</td> 
<td>6</td> 
</tr> 
<tr> 
<td>Omega 6</td> 
<td>1100mg</td> 
<td>*</td> 
</tr> 
<tr> 
<td>Vitamin Sodium</td> 
<td>1200mg</td> 
<td>*</td> 
</tr> 
<tr> 
<td>Vitamin E</td> 
<td>300mg</td> 
<td>*</td> 
</tr> 
</tbody> 
</table> 

回答

1

:contains不接受一個正則表達式,要做到這一點的辦法是filter()

$('.'+title+'table').find('td').filter(function() { 
    return $(this).text().indexOf('Sodium') === 0; 
}).next().html(); 

FIDDLE

使用indexOf === 0確保鈉有指數爲零,即th E要發生的元素文本第一件事