использование jQuery .load () для добавления данных вместо замены

как у меня может быть функциональность load() кроме я хочу добавить данные вместо замены. возможно, я могу использовать get() вместо этого, но я хочу просто извлечь #posts элемент от загруженных данных


ОБНОВЛЕНИЕ

когда я делаю alert(data) я добираюсь...




  
  
  
  
  


  
...
...

полный код может быть найден pastebin

8
задан Jiew Meng 9 July 2010 в 04:51
поделиться

3 ответа

Нет причин, по которым вы не можете извлечь нужный вам элемент, используя $.get().

$.get('test.html',function(data) {
    var posts = $(data).find('#posts');
       // If the #posts element is at the top level of the data,
       //    you'll need to use .filter() instead.
       // var posts = $(data).filter('#posts');
    $('#container').append(posts);
});

EDIT:

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

Если элемент #posts находится на вершине иерархии в data, другими словами, если у него нет родительского элемента, вам нужно использовать .filter() вместо этого.

$.get('test.html',function(data) {
    var posts = $(data).filter('#posts');
    $('#container').append(posts);
});

EDIT:

Судя по комментариям ниже, вам, похоже, нужен .filter() вместо .find().

Причина в том, что вы передаете всю структуру HTML. Когда вы это делаете, jQuery помещает прямые дочерние элементы тега body в качестве массива в объект jQuery.

jQuery's .filter() фильтрует только узлы в этом массиве. Не их дочерние узлы.

jQuery's .find() ищет среди потомков узлов в массиве.

Из-за этого вам нужно использовать оба варианта. .filter() для получения нужного узла сверху (#posts) и .find() для получения нужного потомка (.next).

$(data).filter('#posts').find('.next');

Это сужает набор только до элемента #posts, затем находит элемент .next, который является потомком.

12
ответ дан 5 December 2019 в 11:22
поделиться
$.get("YadaYadaYada.php", function(dat) {
   $(dat).find("body > #posts").appendTo("#container");
});
1
ответ дан 5 December 2019 в 11:22
поделиться

попробуйте использовать $(this), что-то вроде :

<div id="result">Hello World </div>
    <script>
    $(function() {
            $(this).load('templates/test2.html', function(result) {
                $('#result').append(result);
            });
        });
    </script>
0
ответ дан 5 December 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: