2010-01-09 1 views
3

У меня есть таблица, в которой есть несколько строк.Больше чем селектор в jquery?

Вот пример моего стола только с меньшим количеством строк таблицы.

<table> 
<tr> 
    <td>bob</td> 
    <td class="CheckThis">0 </td> 
</tr> 
<tr> 
    <td>Jim</td> 
    <td class="CheckThis">3</td> 
</tr> 
</table> 

Теперь я хочу посмотреть на второй ячейки таблицы и получить строки обратно, которые имеют значение, большее, то 0.

Таким образом, в моем примере выше было бы получить всю строку, содержащую «3», поскольку больше нуля.

Я не вижу секторов, которые больше делают что-то в jquery, но я мог бы просто пропустить это.

спасибо

ответ

5

Попробуйте это:

$("tr").filter(function() { 
    return parseInt($(this).children("td.CheckThis").text(), 10) > 0; 
}) 

Это подберет вам каждый TR элемент, который имеет TD дочерний элемент с классом CheckThis, что это содержание больше чем 0.

+0

Почему .text ()? Я не думаю, что раньше я использовал этот селектор. Обычно я использую val() или html(). В чем разница? Является ли текст таким же, как фактический текст, а не тегами html? – chobo2

+0

'val()' работает только с ** входными ** элементами: http://docs.jquery.com/Attributes/val 'html()' возвращает/устанавливает html, а не текст. 'Text()' экранирует HTML. Вам не нужен 'html()' здесь, поскольку нет средств для содержимого HTML. – BalusC

+0

@ chobo2: 'val' для элементов ввода, а' html' возвращает содержимое HTML (разметка), в то время как 'text' просто возвращает текстовое содержимое. Для получения дополнительной информации см. Документацию jQuery: http://docs.jquery.com/ – Gumbo

0

Несомненно, gt должно сделать это. Проверьте документы на Selectors/gt

Редактировать: О, вы говорите о значении в HTML элемента? Вам, вероятно, придется настроить петлю .each с фильтром или чем-то еще. Я проверю это, извините.

+0

Это выбирает по индексу , а не по содержанию. – BalusC

+0

Да, только что заметили. Я бы удалил свой пост, если это было возможно. – JAL

4

Для этого вы можете использовать функцию filter().

E.g.

var tds = $('td.CheckThis').filter(function() { 
    return parseInt($(this).text()) > 0; 
}); 

Update: перечитав вопрос еще раз, вы на самом деле хотите, чтобы выбрать tr элементы, содержащие td «S в вопросе и, следовательно, не только td» с. В этом случае, пожалуйста, проверьте Gumbo's answer на другой пример кода, который делает это право.

+0

Всегда рекомендуется включать базу чисел для parseInt, чтобы избежать случайного перехода в восьмеричный режим: 'parseInt ($ (this) .text(), 10)' – slebetman

+0

Только если числа начинаются с '0', что я не см. в его примере. – BalusC

+0

Но это не выбирает строки. – Gumbo

0
var list = []; 
$("table").find("tr td:eq(1):not(:contains('0'))").each(function(i,val){ 
    list.push($(this).parent()); //add TR 
});