I would guess that this is because you have not specified replace: true for the isrcrow directive. As a result, the final markup would look like:
...
...
...
Which will be a direct child of a , which is invalid markup. As a result, most modern browsers (e.g. Chrome, and also Firefox, I believe) will try to "fix" your markup to be valid by moving the tag outside of the table.
Instead, if you add replace: true to your directive specification, the element won't be rendered, and the browser should see only valid markup and not try to "fix" it.