Actualizar:
Desde jQuery 1.8, podemos usar $ .parseHTML , que analizará la cadena HTML a una matriz de nodos DOM. p.ej:
var dom_nodes = $($.parseHTML('<div><input type="text" value="val" /></div>'));
alert( dom_nodes.find('input').val() );
MANIFESTACIÓN
var string = '<div><input type="text" value="val" /></div>';
$('<div/>').html(string).contents();
MANIFESTACIÓN
¿Qué está pasando en este código?
$('<div/>')es una falsificación <div>que no existe en el DOM
$('<div/>').html(string)se agrega stringdentro de esa falsificación <div>como niños
.contents()recupera a los hijos de esa falsificación <div>como un objeto jQuery
Si quieres .find()trabajar, prueba esto:
var string = '<div><input type="text" value="val" /></div>',
object = $('<div/>').html(string).contents();
alert( object.find('input').val() );
MANIFESTACIÓN