2011-12-20 4 views
0

Я пытаюсь захватить дочерний элемент HTML, загружаемый динамически через AJAX. Это не работает.jQuery и HTML, загруженные через AJAX

$.get('test.html', function(data) { 

    var content = $('#content', data).html(); 

    console.log(content); // Logs "Null" 

    $('#result').html(content); 

    }); 

Вот 'test.html'

<!DOCTYPE html> 
<html lang="en" > 
<head> 
    <meta charset="UTF-8" /> 
    <title>Website</title> 
    <meta name="description" content="" /> 
    <meta name="keywords" value="" /> 
</head> 
<body> 

    <h1>Hello!!!</h1> 

    <div id="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam feugiat tincidunt tortor eu iaculis. Sed id urna sem, quis malesuada lacus. Nulla iaculis malesuada libero, id vehicula sapien imperdiet eu.</div> 

</body> 
</html> 

Кроме того, если я пытаюсь это: console.log($(data));, Firebug дает мне это:

[<TextNode textContent="\n\n\n ">, meta, <TextNode textContent="\n ">, title, <TextNode textContent="\n ">, meta, <TextNode textContent="\n ">, meta, <TextNode textContent="\n\n\n \n ">, h1, <TextNode textContent="\n \n ">, div#content, <TextNode textContent="\n\n\n\n">] 

Любые идеи ???

+0

где _content в html-файле? –

+0

Извините ... #holder должен был быть #content. Я исправил выше. –

ответ

1

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

$.get('test.html #content', function(data) { 
console.log(data); // Logs "Null" 
$('#result').html(data); 
}); 

thats как веб-сайт jquery скажет, чтобы это сделать.

Я говорю использовать

$('#result').load('test.html #content'); 

что хау уа?

0

попробуйте использовать $ .ajax вместо:

$.ajax({ 
    url:'test.html', 
    dataType:'html', 
    success:function(data) { 
    var content = $('#content', data).html(); 
    console.log(content); // Logs "Null" 
    $('#result').html(content); 
    } 
    }); 
+1

$ .get - это ярлык для того, что вы только что сделали –

+0

Да, это дает мне те же результаты. –

+0

Правильно. Однако я хотел бы определить имя параметров. Основной момент состоит в том, чтобы идентифицировать dataType в случае, когда jQuery неправильно определяет тип данных из типа MIME в ответе. – Travis

0

Я не совсем ясно, на что вы пытаетесь сделать, но я предполагаю, что вы хотите получить содержимое #content в вашей test.html странице и вставьте это в свой #results div.

$.get('test.html', function(data) { 
    var content = $(data).find("#content").html(); 
    $('#result').html(content); 
}); 
+0

Извините ... #holder должен был быть #content. Я исправил выше. В любом случае, я попробовал ваше предложение, а 'content' все еще выходит из системы как« null ». –

+0

Что происходит, когда вы' console.log (data) 'в обратном вызове? – swatkins

+0

Похоже, вы ожидали ... содержимого файла. –

Смежные вопросы