JQuery селектор - вопрос правильности кода - PullRequest
0 голосов
/ 31 мая 2011

Я новичок в jQuery. Я пытаюсь использовать этот код:

var ThisTableWrapper = $('#switch1').parent().next();
var ThisTable = $(ThisTableWrapper > '.table-data');

Но, похоже, это не работает.

Как правильно написать это в одной строке?

Я пробовал что-то подобное, но безуспешно

$( $('#switch1').parent().next();) > .table-data);

Любая помощь будет высоко ценится.

HTML ЗДЕСЬ: HTML-код

Ответы [ 3 ]

3 голосов
/ 31 мая 2011

Селекторы jQuery всегда должны быть строками или другими элементами jQuery / DOM, но не комбинацией / конкатенацией обоих.

Вторая строка должна быть:

var ThisTable = ThisTableWrapper.children('.table-data');

или в одну строку:

var ThisTable = $('#switch1').parent().next().children('.table-data');

В документации представлен список возможных селекторов и методы обхода .


Как @DanielB указывает в своем комментарии, это просто для того, чтобы исправить синтаксис , это не означает, что выбраны правильные элементы. Это зависит от вашего фактического HTML, который вы не опубликовали.

1 голос
/ 31 мая 2011

Предполагается, что вы просто пытаетесь использовать дочерний селектор CSS

var ThisTableWrapper = $('#switch1').parent().next();
var ThisTable = ThisTableWrapper.children('.table-data');

Если вы хотите, чтобы это было в одну строку, просто цепочка

var ThisTable = $('#switch1').parent().next().children('.table-data');

http://api.jquery.com/children

Я отредактировал ответ, чтобы использовать children() вместо find(). Используйте find(), если вы хотите пройти глубже, чем на один уровень (как в начале!)

0 голосов
/ 31 мая 2011

Вы можете попробовать

var ThisTableWrapper = $('#switch1').parent().next().children('.table-data');

Если .table-data не является прямым потомком, то

var ThisTableWrapper = $('#switch1').parent().next().find('.table-data');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...