Atualizar:
No jQuery 1.8, podemos usar $ .parseHTML , que analisará a string HTML em uma matriz de nós DOM. por exemplo:
var dom_nodes = $($.parseHTML('<div><input type="text" value="val" /></div>'));
alert( dom_nodes.find('input').val() );
DEMO
var string = '<div><input type="text" value="val" /></div>';
$('<div/>').html(string).contents();
DEMO
O que está acontecendo neste código:
$('<div/>')
é uma farsa <div>
que não existe no DOM
$('<div/>').html(string)
acrescenta string
dentro desse falso <div>
quando crianças
.contents()
recupera os filhos desse falso <div>
como um objeto jQuery
Se você quiser fazer o .find()
trabalho, tente o seguinte:
var string = '<div><input type="text" value="val" /></div>',
object = $('<div/>').html(string).contents();
alert( object.find('input').val() );
DEMO