2012-01-05 6 views
0

Если у меня есть список строк таблицы, хранящихся в переменной, существует ли способ разместить только одну из этих строк (с определенным идентификатором) в переменную-анотер?Извлечь только одну строку таблицы из списка

Например, если tableRows был это -

<tr id="0"></tr> 
<tr id="1"></tr> 
<tr id="2"></tr> 
<tr id="3"></tr> 
<tr id="4"></tr> 

Как я мог установить singleRow в <tr id="2"></tr>?

+1

Является ли 'tableRows' строкой HTML или объектом jQuery? Вы посмотрели документацию, например. [ '.filter()'] (http://api.jquery.com/filter/)? –

+0

Вы имеете в виду, что 'tableRows' - ​​это объект jquery, содержащий эти строки или что это строка с этим текстом? Кроме того, ваш 'id' не должен начинаться с числа, за исключением того, что я верю в HTML5. –

+0

Извините, это HTML-строка. И мои идентификаторы на самом деле не цифры, это просто (бедный) пример! Благодарю. –

ответ

4

Предполагая, что tableRows содержит строку HTML:

var singleRow = $(tableRows).filter("#2"); 

Если это уже объект JQuery оберточной строку HTML, то вы можете пропустить вызов JQuery :

var singleRow = tableRows.filter("#2"); 

Метод filter уменьшает согласованный набор элементов соответствует тем, которые соответствуют селектору (или передают тест, определенный функцией).

Адрес working example.

Однако, возможно, стоит отметить, что переменная singleRow будет содержать экземпляр jQuery, а не строковый литерал, такой как tableRows. Для того, чтобы извлечь строку из этого вам нужно немного хитрости:

var str = $("<div>").append($(rows).filter("#2")).html(); 

В принципе, вы добавляемая нужный элемент на новый (в данном случае это div), а затем вызвать html по этому вопросу. Поскольку метод html возвращает строку, у вас есть строка, содержащая содержимое нового элемента, который является вашим желаемым элементом.

+0

Прекрасно, похоже, что сработало. Благодарю. –

+0

Без проблем, рад, что смогу помочь :) –

+0

Хм, кажется, я немного опередил меня. Используя ваш код (исходная строка была HTML), кажется, что одна строка захвачена, но она как объект. Все, что мне нужно, это часть HTML из исходной строки. Это возможно? Благодарю. –

2

Просто используйте

$("#2") 

получить <tr id="2"></tr>

[EDIT] Как отметил Феликс Клинг в своем комментарии, если переменная tableRows был объект JQuery и вы не хотите фильтр по id, но другим типом селектора (а не уникальным), вы должны рассмотреть возможность использования .filter(), как показал Джеймс Аллардис в своем ответе.
[EDIT 2] (Кредиты Джеймс Montagne в комментариях), это также верно, если ваши таблицы строк еще не существует и до сих пор переменной объекта

Помните, что выбор по id самый быстрый (и самый простой) способ выбора, при условии, что ваш HTML правильный, и ваш идентификатор уникален.

+1

EDIT также верен, если строки на самом деле не существуют на DOM, а просто создаются в памяти. '$ ("

+0

@JamesMontagne: спасибо, что указали это! Я отредактировал свой ответ – JMax

1

Как вы используете идентификаторы затем

$('#2') 
1

с идентификатором вы можете сделать this-

$('#2') 
0

Я предлагаю пребывания с указанием типа тега вы ожидаете.Так как dknaack предложил или

$('tr#2')

будет более точным. Но все здесь правильно. Это основы Jquery seletors. Это также похоже на CSS-селектор. Вы также можете найти больше на селекторах из документов JQuery. http://api.jquery.com/category/selectors/

0
var tableRows = $('tr'), 
    singleRow = tableRows[2]; 
+0

Это будет работать в случае кода примера в вопросе, но OP хочет, чтобы получить определенную строку с помощью 'id', а не индекса. –

+0

ах я вижу, тогда я бы пошел с твоим предложением .filter() –

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