Short answer: your Fiddle can be fixed with the either one of the following lines (depending on what element you need):
$scope.myElement = $('#foo').prop("outerHTML");
$scope.myElement = $('#foo').html();
This change will prevent Chrome from looking too deep (or rather, high up) into the document tree.
I believe that the issue in your Fiddle is related to the way Chrome stringifies the object returned by jQuery. During this stringification it probably attempts to stringify the parent document, too - and there it interacts with Angular magic - in a bad way.
By the way, the code in provided Fiddle does not cause mentioned error. in Firefox, running the Fiddle does not result in an error.
It is not clear to me what you intend to do, but I believe you might be looking for functionality that $compile service provides. It compiles a piece of HTML string or DOM into a template and produces a template function, which can then be used to link scope and the template together.
As mentioned, you should not access DOM from a controller.
Your approach looks very jQuery-ish to me: you seem to be trying to manipulate the data based on DOM. Angular approach is to create a "data-driven document" - the data in your models should determine the contents of DOM.