Я пытаюсь загрузить определенную часть другой веб-страницы с помощью запроса jQuery $ .ajax (у которого нет идентификатора).

Простой пример ....

Вот пример HTML:

<div id="list">
    <ul>
        <li>Foo 6</li>
        <li>Foo 7</li>
        <li>Foo 8</li>
        <li>Foo 9</li>
        <li>Foo 10</li>
    </ul>
</div>

И пример JQ:

$("#more").on("click", function(event){
    $.ajax({
        url: 'foo.html',
        datatype: 'html',
        success: function (data) {
            $('#list ul').append($(data).filter('#list').html());
        }
    })
    event.preventDefault();
});

Тем не менее, я хочу нацелиться на ul WITH # list, но если я изменю фильтр на '#list ul', ничего не получится. Это сводит меня с ума. Как я могу нацелить этот элемент? Я попытался использовать поиск вместо фильтра, но это тоже ничего не возвращает.

Ура

0
Adi 24 Янв 2013 в 16:38

2 ответа

Лучший ответ

filter() будет работать, только если целевой селектор находится на корневом уровне, в противном случае вам нужно использовать find()

 $('#list ul').append($(data).find('#list ul').html());

ИЛИ следование также будет работать, но не будет эффективным

$('#list ul').append($(data).filter('#list').children('ul').html());
0
charlietfl 24 Янв 2013 в 13:02

Обновленная скрипка: http://jsfiddle.net/vKUD7/1/

<div id="container">
    <div>
        <div id="list">
            <ul>
                <li>Foo 6</li>
                <li>Foo 7</li>
                <li>Foo 8</li>
                <li>Foo 9</li>
                <li>Foo 10</li>
            </ul>
        </div>
    </div>
</div>
<div id="list2">
    <ul></ul>
</div>

С помощью этого тривиального кода для имитации данных, возвращаемых с другой страницы:

var data = $('#container').html();

$('#list2 ul').append($(data).find('#list ul').html());

//Doesn't work
//$('#list2 ul').append($(data).filter('#list').children('ul').html());

Первая часть другого ответа также верна, вы должны использовать find для рекурсивного обхода дочерних элементов, которые найдут ваш div по ID, а затем позволят вам найти элемент ul внутри только этого div.

Вторая часть с использованием .filter и .children, похоже, не работает ...

Надеюсь это поможет!

0
mattdlockyer 24 Янв 2013 в 13:07