Селекторы jQuery выбирают из HTML-объекта, кроме корневого документа? - PullRequest
1 голос
/ 09 июня 2010

JQuery селекторы выбрать из документа.
Как выбрать что-то еще, кроме root? Скажем, я хочу выбрать несколько детей из объекта HTML.

Для этого

function dothis(obj)
{
     $j("#tabs").removeClass();
     $j("#tabs>ul").removeClass();
     $j("#tabs>ul>li>a").each(function()
     {
         var tabNum = $j(this).attr("href").replace("#", "");
         var tabContent = $j("div[id=" + tabNum + "]");
         tabContent.removeClass();
         $(tabContent).before("<br><h1>" +$j(this).text() + "</h1>\n" );
     });
     $j("#tabs>ul").each(function()
     {
         $j(this).empty();//remove Ul links on top

     });
}

Я хочу сослаться на селекторы из объекта HTML (obj), который я передал в качестве аргумента вместо выбора из документа.

Это работает!

$j("#tabs", obj).removeClass();

Ответы [ 3 ]

4 голосов
/ 09 июня 2010

Вы можете дать вашему селектору второй параметр для уточнения контекста:

$j("#tabs", obj).removeClass();
3 голосов
/ 09 июня 2010

Вы можете использовать:

$j(obj).find('#tabs')

, чтобы указать, в каких элементах контекста вы хотите что-то искать.Некоторые люди предпочитают этот синтаксис:

$j('#tabs', obj)

, который я бы не рекомендовал .Он внутренне преобразует его в то же самое, что я упоминал выше (.find()), а во-вторых, его сложнее читать из-за переключенного порядка.

1 голос
/ 09 июня 2010

Если obj является элементом HTML, вы можете использовать параметр context для jQuery(selector, context)

jQuery( selector, [ context ] )

selector Строка, содержащая выражение селектора
context Элемент DOM, Документ или jQuery для использования в качестве контекста

т.е. $j("#tabs",obj).removeClass()

Вы также можете использовать метод .find() для объекта jQuery для поиска дочерних элементов соответствующего элемента, а внутренне $(selector, context) просто вызывает $(context).find(selector) в любом случае.

Например:

function dothis(obj) {
  var $obj = $j(obj);
  $obj.find('#tabs').removeClass();
  // ....
}

Хотя в любом примере #tabs будет искать элемент с идентификатором tabs, в документе может быть только один элемент с любым данным идентификатором, вам может потребоваться переключиться на использование класса, если Вы хотите, чтобы эта функция работала в двух разных контекстах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...