Найти элемент, содержащий определенный текст и определенных родителей - PullRequest
0 голосов
/ 08 февраля 2011

Я искал вверх и вниз, но не могу найти то, что ищу.

Я извлекаю данные, используя довольно простой вызов jQuery.ajax:

function retrieveFeed() {
    $.ajax({
        type: "GET",
        url: "http://xxxxx/taskdata.xml",
        beforeSend: function(XMLHttpRequest) {
        return true;
        },
        timeout: 5000,
        dataType: "xml",
        success: function(data) {
            parseXML(data);
        },

        error: function() {
        console.log("Error retrieving XML");
        }
    });
}

XML действительно прост:

<tasks>
    <task>
        <title>Refresh Sports page code base</title>
        <id>15276645606996729654</id>
        <owners>
            <owner>
                bfranklin
            </owner>
            <owner>
                bting
            </owner>
        </owners>
    </task>
    <task>
        <title>Security audit for college sports pages</title>
        <id>12019410900674133028</id>
        <owners>
            <owner>
                rgoulet
            </owner>
            <owner>
                bfranklin
            </owner>
        </owners>
    </task>
    <task>
        <title>Fill holes in site monitoring</title>
        <id>828664522750709776</id>
        <owners>
            <owner>
                rgoulet
            </owner>
            <owner>
                dgreene
            </owner>
            <owner>
                lkeene
            </owner>
        </owners>
    </task>
</tasks>

То, что я пытаюсь сделать, это взять имя, скажем, rgoulet, и получить заголовок и / или идентификатор назначенных ему задач. Поэтому первая цель - найти в моем объекте jQuery $ (data) любой элемент владельца с текстом «rgoulet». Далее я хочу получить заголовок и идентификатор прямо над ним.

Я знаю, что это возможно, но я в тупике. Я видел "родителей", но я не знаю, как указать. Кроме того, я попробовал несколько способов поиска $ (данных) для каждого экземпляра владельца с помощью rgoulet, но все они оказались в столь описательной «ошибке разбора». :)

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

1 Ответ

1 голос
/ 08 февраля 2011

Как только вы нашли правильный <owner>, содержащий 'rgoulet', используйте .closest('task'), чтобы найти ближайший родительский элемент типа <task>:

var $task = $(data).find("owner:contains('rgoulet')").closest('task');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...