Truncating text with jQuery but keep the HTML formatting
First of all, I would just like to say that this is a really good and useful function. From a Code Review standpoint, there are almost no errors in it that I know of. Here are a few things I found from examining it:

Keep spacing uniform
Line 8 doesn't have a space between parameters, where your other function calls do. This is most likely due to quick typing and not any major issue other than a cleanliness nitpick.

An invalid input for if
Lines 19-21 where you have an if like so:

if (missCount == 0) {
  // We got text enough, stop looping.
  return false;
}


You should never use == over === due to it being possible that something like "0" would match the same as 0. This is because the double equals signs finds if it matches an exact value, where triple equals signs tests for exact value and type. So your final code should look like this for the if statement:

if (missCount === 0) {
  // We got text enough, stop looping.
  return false;
}


Optional - JSHint
If you use JSHint in JSFiddle, then you'll run into errors when trying to run this:

elem.outerHTML.match(/^&lt;[^&gt;]+&gt;/m)[0]
  + grabText
  + '&lt;/' + elem.localName + '&gt;',


If you're worried about that then you just have to write it all on one line. But for being short and concise, that might not be what you want.