2014-09-10 8 views
-1

Как я могу захватить список всех строк из таблицы, где одна ячейка равна 0,00? код jquery, если возможно.захватить список строк из таблицы на основе значения ячейки

отредактированы ADD:

Пожалуйста, не код, шлейфы (не each заявления). Я пытаюсь избежать цикла.

<table id="products"> 
<tr><td>Name</td><td>Product</td><td>Price</td></tr> 
<tr id="1"><td>gdfgdf</td><td>1</td><td aria-describedby="Price">0.00</td></tr> 
<tr id="2"><td>gdf455g</td><td>2</td><td aria-describedby="Price">0.00</td></tr> 
<tr id="3"><td>gdf43gdf</td><td>1</td><td aria-describedby="Price">6.50</td></tr> 
<tr id="4"><td>gdf44g</td><td>2</td><td aria-describedby="Price">7.00</td></tr> 
</table> 

Мне нужно захватить первые две строки (в данном случае), так как цена составляет 0.00.

+1

Опубликовать HTML-код, и мы скажем вам? – adeneo

+2

Я постараюсь стрелять вслепую -> '$ ('table tr: has (td: contains (0.00))')' – adeneo

+0

Мы будем рады помочь вам, если у вас есть код разметки и Javascript/jQuery, который у вас есть уже пробовал. Что не удалось или не сработало и как мы можем помочь? – PeterKA

ответ

1

Версия с .each

$('td').each(function() { 
     if ($(this).text() == 0) { 
      $(this).css("background", "yellow"); 
     } 
    }); 

enter image description here

Версия с: содержит (обновлено, чтобы выделить первые две строки, а не только клетки)

var element = $('td:contains(0)'); 

for (i=0; i<element.length; i++) 
{ 
if (element[i].innerHTML == 0) 
$(element[i]).parent().css("background", "yellow"); 
} 

enter image description here

+0

нет каждый пожалуйста. Я не хочу зацикливаться - все дело в том, чтобы захватить их всех без петли. – sarsnake

+1

@sarsnake, независимо от того, что вы используете, у него будет петля, чтобы проверять каждую строку. – charlietfl

+0

@sarsnake Добавлена ​​версия, которая сначала проверяет, содержит ли ячейка 0, так что ей не нужно будет «излишне» петли через другие ячейки, такие как «gdfgdf» «1» и так далее. – Charles

1

Может дать вам метод, который явно не использует цикл, такой как each, но он, безусловно, будет использовать цикл в фоновом режиме, поскольку нет другого способа, кроме того, чтобы закодировать все строки для проверки текста.

$('#products tr').filter(function(){ 
    return $(this).find('td:last').text() == '0.00'; 
}).doSomething(); 

DEMO

+0

Это прекрасное! – Charles

1

нормально, так что

$("#products td").filter(function() { 
         return $(this).text() == 0; 
        }).closest("tr").hide(); 

Это скроет те строки, которые имеют, по меньшей мере, одну ячейку, равную 0.

Ура!

+0

вы должны посмотреть в источнике jQuery ... увидите, что 'filter()' использует 'each' ... нет другого способа, кроме цикла – charlietfl

+0

Очень элегантные решения! Я только что научился .filter(), woohoo! – Charles

+0

@chartlieff, возможно - но по крайней мере мне не нужно это делать сейчас. – sarsnake

Смежные вопросы