как у меня может быть функциональность load()
кроме я хочу добавить данные вместо замены. возможно, я могу использовать get()
вместо этого, но я хочу просто извлечь #posts
элемент от загруженных данных
когда я делаю alert(data)
я добираюсь...
...
...
полный код может быть найден pastebin
8
задан Jiew Meng 9 July 2010 в 04:51
поделиться
Нет причин, по которым вы не можете извлечь нужный вам элемент, используя $.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
, который является потомком.
$.get("YadaYadaYada.php", function(dat) {
$(dat).find("body > #posts").appendTo("#container");
});
попробуйте использовать $(this), что-то вроде :
<div id="result">Hello World </div>
<script>
$(function() {
$(this).load('templates/test2.html', function(result) {
$('#result').append(result);
});
});
</script>