You ask why this doesn't work:
$('div').find('a').find(':contains("Text2")')
The reason is, .find() will search children elements, you want .filter() (because you already selected the a - or you add the :contains to the a find:
$('div').find('a').filter(':contains("Text2")');
$('div').find('a:contains("Text2")');