jQuery несколько селекторов с точечной нотацией? - PullRequest
4 голосов
/ 05 марта 2012

OK. Я отчасти нуб ... но не такой нуб. :)

Я хочу выполнить find () в jQuery, который имеет аналогичный результат точечной нотации или "&&". Вот пример (который не работает):

data.find("continent_country[id = 'us'].state[id = 'in']").each(function(){
// what to do
}

или

data.find("continent_country[id = 'us'] && state[id = 'in']").each(function(){
// what to do
}

Мне сказали попробовать запятую, вот так:

data.find("continent_country[id = 'us'], state[id = 'in']").each(function(){
// what to do
}

... но это возвращает неправильные предметы.

Мой XML выглядит так:

    <continent_country id="us" name="U.S.">
        <state id="al" name="Alabama"> 
            <city url="" name="auburn"/>
            <city url="" name="birmingham"/>
            <city url="" name="dothan"/>
            <city url="" name="florence / muscle shoals"/>
            <city url="" name="gadsden-anniston"/>
            <city url="" name="huntsville / decatur"/>
            <city url="" name="mobile"/>
            <city url="" name="montgomery"/>
            <city url="" name="tuscaloosa"/> 
        </state>
        <state>//more states</states>
    </continent_country>
    </continent_country id="eu" name="Europe">
        <state>//more states</states>
    </continent_country>

В некоторых штатах / провинциях / странах используется один и тот же идентификатор, поэтому я хотел бы найти штат в указанной continent_country.

Заранее спасибо ...

Ответы [ 5 ]

4 голосов
/ 05 марта 2012

я думаю, что вы хотите, чтобы дочерняя запись:

http://api.jquery.com/child-selector/

что-то вроде

data.find('continent_country[id = 'us'] > state[id='in']).each(function(){
   //do your stuff here
} 
1 голос
/ 05 марта 2012

Вы можете просто использовать метод add(), который добавляет больше элементов к выбору на основе нового селектора, например,

data.find("continent_country[id = 'us']").add("state[id = 'in']").each(function(){
    // what to do
}
0 голосов
/ 05 марта 2012

Если вы хотите, чтобы государство находилось внутри страны, вы должны использовать селектор потомков continent_country[id='us'] state[id='in']

Или дочерний селектор : continent_country[id='us'] > state[id='in']

Вы должны узнать больше о селекторах jquery

0 голосов
/ 05 марта 2012

Не могли бы вы попробовать метод .has()?

data.find("continent_country[id = 'us']").has("state[id = 'in']").each(function(){
// what to do
}

Это должно работать.

0 голосов
/ 05 марта 2012

Вы можете использовать селектор :has, функцию .has или выбрать ближайший continent_country над состоянием. Вот функция has, которая, вероятно, наиболее эффективна.

data.find("continent_country[id='us']").has("state[id='in']")

Это предполагает, что вы хотите получить элементы <continent_country> ... если я неправильно понял, и вы хотите получить элементы <state>, используйте пробел:

data.find("continent_country[id='us'] state[id='in']")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...