Jquery / javascript, filtrando o object html da resposta do ajax

Eu tenho esse pedaço de html:

Text for div 2
Text in div 2

Que eu pego com uma simples chamada .ajax

 var html = $.ajax({ url: "htmlsnippet.html", cache: false, async: false, dataType: "html" }).responseText; 

Se eu filtrar com:

 var htmlFiltered = $(html).filter("#1"); 

funciona muito bem, eu recebo o div inteiro com id = “1”,
mas se eu usar:

 var htmlFiltered = $(html).filter("#1 .text"); 

a variável htmlFiltered é um object vazio. Eu não consigo descobrir o que estou fazendo errado.

Você deve armazenar desta maneira:

 $.ajax({ url: "htmlsnippet.html", cache: false, async: false, dataType: "html", success: function(data){ html = data; } } 

EDIT: Sua maneira de obter html funciona, mas não é recomendado.
Você não pode pegar seu último elemento porque está usando o filter vez de find , então você deve ter:

 var htmlFiltered = $(html).find("#1 .text"); 

ao invés de

 var htmlFiltered = $(html).filter("#1 .text"); 

O W3C também recomenda não ter IDs numéricos.

EDIT 2 : Isso deve funcionar:

 var htmlFiltered = $(html).filter("#1").find(".text"); 

Espero que isto ajude. Felicidades

Se você não precisa de nenhuma funcionalidade especial dada pelo método $.ajax completo, você deve tentar $.load() :

O método .load (), ao contrário de $ .get (), nos permite especificar uma parte do documento remoto a ser inserido. Isso é conseguido com uma syntax especial para o parâmetro url. Se um ou mais caracteres de espaço forem incluídos na string, a parte da string após o primeiro espaço será considerada como um seletor jQuery que determina o conteúdo a ser carregado.

 $('#result').load('ajax/test.html #container'); 

http://api.jquery.com/load/#loading-page-fragments

Isso funciona para mim:

 $.get(url,function(content) { var content = $(content).find('div.contentWrapper').html(); ... }