2013-05-21 2 views
13

У меня есть этот материал:селектор JQuery первый тд каждой строки

<table> 
    <tr> 
    <td>nonono</td> <!-- FIND THIS --> 
    </td>foobar</td> 
    </tr> 
    <tr> 
    <td>nonono2</td> <!-- FIND THIS --> 
    </td>foobar2</td> 
    </tr> 
    <tr> 
    <td>nonono3</td> <!-- FIND THIS --> 
    </td>foobar2</td> 
    </tr> 
</table> 

Я попытался с $('td:first') не повезло;

Ожидаемый доход: <td>nonono</td>, <td>nonon2</td> и <td>nonon3</td>

Заранее спасибо!

+0

Из [документации] (http://api.jquery.com/first-selector/): * «Псевдокласс класса': first' эквивалентен ': eq (0)'. Он также может быть записан как ': lt (1)'. Хотя это соответствует только одному элементу, ': first-child' может соответствуют более чем одному: по одному для каждого родителя."* –

ответ

28

Вы должны использовать :first-child вместо :first:

Похоже, вы желая итерацию через них. Вы можете сделать это, используя .each().

Пример:

$('td:first-child').each(function() { 
    console.log($(this).text()); 
}); 

Результат:

nonono 
nonono2 
nonono3 

Alernatively если вы не желая повторять:

$('td:first-child').css('background', '#000'); 

JSFiddle demo.

+0

Я буду принимать как правильный ответ, потому что альтернативный метод contais ': first-child' –

6

попробовать этот селектор -

$("tr").find("td:first") 

Demo -->http://jsfiddle.net/66HbV/

Или

$("tr td:first-child") 

Demo -->http://jsfiddle.net/66HbV/1/

</td>foobar</td> должен быть <td>foobar</td>

+0

возвращает только первый td –

+1

Просто используйте' first-child'. Причина ': first' не работает одна, потому что она вытаскивает самый первый элемент и ничего больше. –

+0

Это сделало это для меня. ищет только один выбранный мной: '$ (this) .find (« td: first »)' – Sander

1

попробовать

var children = null; 
$('tr').each(function(){ 
    var td = $(this).children('td:first'); 
    if(children == null) 
     children = td; 
    else 
     children.add(td); 
}); 

// children should now hold all the first td elements 
1

$('td:first-child') возвращает коллекцию элементов, которые вы хотите.

var text = $('td:first-child').map(function() { 
    return $(this).html(); 
}).get(); 
2

Использование:

$("tr").find("td:first"); 

js fiddle - этот пример имеет .text() на конце, чтобы показать, что она возвращается элементы.

В качестве альтернативы, вы можете использовать:

$("td:first-child"); 

.find() - JQuery API документация

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