2009-11-04 5 views
11

Я хотел бы выбрать элемент внутри td одной из моих таблиц, но я действительно не понимаю синтаксис. Это то, что я пробовал:JQuery выберите элемент внутри td

$("table > td:#box") 

Это образец моей структуры таблицы:

<div id="main"> 
<div id="today"> 
    <table id="list" width="100%" cellpadding="4" cellspacing="0" border="0" style="font-size: 10px; border-collapse:collapse;"> 
    <tr id="109008"> 
    <td class="tdstd"> 
    <a class="box" href="link"></a> 
    </td> 

Или с DOM Inspector в Chrome:

alt text

+0

Пожалуйста, разместите соответствующий фрагмент кода HTML и сообщите, какую именно часть вы хотите, идите от него. – BalusC

+0

Возможно, вы можете показать фрагмент HTML с таблицей и элементом. Является ли элемент div с id "box"? –

+0

, чтобы взяться за то, что вам нужно - у вас есть текст, и вы хотите получить «текст» или «идентификатор»? – cupakob

ответ

17

Ну, «#box «означает объект DOM с полем« id », так как он является уникальным идентификатором. Вы можете выбрать это напрямую. Но ваш код предполагает, что у вас есть несколько элементов с идентификатором «box», который вы должны изменить. Вы должны назначить класс к вашему элементу внутри TD, или если он уникален, будучи единственным DIV или SPAN в поле, вы можете получить доступ к нему, как это:

$("table td .box") 

Обратите внимание, что «>» селектор означает, что TD должен быть прямым дочерним элементом TABLE, и я предполагаю, что вы имеете по крайней мере уровень TR между ними, так что это тоже не сработает. Мой пример выше соответствует каждому элементу с полем класса внутри любого TD, который является дочерним элементом для любого TABLE.

Очевидно, что я бы поставил класс на столе, а также, и использовать что-то вроде этого:.

$("table.boxes td .box") 

Точно так же вы не случайно выбирает вещи за рамки вы хотите работать в


Вы добавили HTML, так что я редактирования мой ответ:

$("table#list a.box") 
+2

+1, но у него есть идентификатор на столе, который уже значительно эффективнее - $ ('# list td a.box') - это «правильное» решение здесь – annakata

+0

Правильно, но я обычно используют имя тега при выполнении иерархических выборок, чтобы я мог видеть только ту часть страницы, которую я выбираю. Если бы id был «tablelist», я бы этого не сделал, но «список» был настолько общим, поэтому меня можно было смутить, если бы мой jQuery-код работал долго. Но все, что было сказано, вы, очевидно, правы :) – Sandman

-2

Я не уверен, но я думаю, что вам нужно $("td#box") ...

+1

это не так - # означает идентификатор и нет элитности с идентификатором «ящик», не говоря уже о td с таким – annakata

+0

, в начале было postet только этот $ («table> td: #box»), а не мир кода :) – cupakob

+0

Да, я заметил это - вот почему я не сбил вас, просто прокомментировал :) – annakata

0

Этот селектор ...

table td a.box 

говорит JQuery найти a тег с атрибутом class, который содержит " ящик». И этот тег a должен находиться внутри td, который находится внутри table.

9

Наиболее эффективный селектор будет:

$('#list').find('a.box'); 

или:

$('a.box', $('#list')[0]); 

Выбрав таблицу id первых вы установили свой объем, чтобы просто стол, а затем вы можете выполнить поиск элемента что вам нужно в этой таблице.

Второй селектор - это то же самое, вы выбираете что-то, и вы предоставляете область действия в качестве второго параметра.

Это просто легче прочитать первый.

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