2009-02-16 5 views
6

Я пытаюсь сделать сделать следующий выбор:JQuery контекст Селектор вопрос

$(".program", row) 

Где «строка» представляет собой объект JQuery, содержащий две строки таблицы. Одна из ТР имеет «программу класса» Этот селектор не кажется, чтобы найти его Однако следующие работы:...

$(".title", row) 

где div.title является потомком tr.program

Если Я использую объект JQuery в качестве контекста селектора, я не в состоянии соответствовать элементы верхнего уровня этого объекта JQuery?

спасибо,

-Morgan

ответ

-1

Вы наиболее certainl y могут соответствовать элементам верхнего уровня. Можем ли мы увидеть источник, который вы используете? Ваш код должен работать, поэтому, вероятно, проблема в самом HTML.

0

Вы находитесь на правильном пути с потомками. Передача контекста в селектор выполняет поиск всех потомков, найденных в этом контексте.

В вашем случае, поскольку объект не является «родительским, содержащим две строки», а скорее «набором строк», .program не выбирается. Так как .title является фактическим потомком в вашей коллекции, его можно выбрать.

+0

Круто. Спасибо за подтверждение моего наблюдения. Мой объект - это результат $ (someHTML) .appendTo (aTable). Любые предложения о наилучшем способе выбора одного из этих рядов по классам? Я мог бы перебирать объект jquery, но я надеюсь, что он будет немного красивее. – morgancodes

+0

Итерация с использованием функции $ .each jQuery не так уродлива, если вы хотите сохранить существующий селекторный код. –

2

Я понимаю, что контекст должен быть уровнем корня, то есть родителем, в котором вы хотите сделать свой выбор.

EDIT: После Теперь сделать некоторое чтение, вы должны быть в состоянии соответствовать верхние элементы уровня контекста (контекст по умолчанию document).

Beardscratchers имеет хорошую статью об использовании контекста с селекторами jQuery. В общем, вы должны попытаться передать идентификатор элемента в качестве контекста для обернутого jQuery набора, поскольку это наиболее эффективный способ определения местоположения элемента.

Внутренне контекст селектора осуществляется с помощью метода .find, так $(selector, context) эквивалентно $(context).find(selector)

+0

Если это эквивалентно '$ (контексту).find (selector) ', то следует отметить, что селектор не будет соответствовать самому контексту, если он является элементом, так как find() соответствует только потомкам. – Jason

+1

@ Джейсон. Правильно, контекст - это область, в которой можно искать, исключая себя –

6

Похоже, что вы пытаетесь выбрать элементы из тех, которые вы уже выбрали (проживающих в объекте JQuery) ,

Контекст, поскольку касается jQuery, похож на указание родителя - контекст является узлом где-то ВЫШЕ, что вы ищете в дереве DOM. Контекст - это где jQuery будет искать указанный вами селектор.

Если я правильно о том, что вы пытаетесь сделать, то это должно работать:

row.filter('.program'); 

// And then: 
row.filter('.program').find('.title');