views:

846

answers:

1

HTML:

<table>
  <tr>
    <td>
      <a href="#">link</a>
    </td>
  </tr>
</table>

I want to: FIND 'link' in 'a' and STRIP ALL parent tags except/until 'table'. I know its not the ideal way to do it, but sometimes you just can't modify the markup so it'd be great to know a jquery hack for this.

+4  A: 
var a = $("a:contains('link')");
var table = a.closest('table');
a.insertBefore( table );     // Edit: See comments below
table.contents().remove();
table.append( a );

Edit: Calling remove() will also remove any event handlers that might be attached to the anchor element. To get around that, move the anchor outside of the table before removing its contents.

Tinister
you could also `clone(true)` the `<a>` elements, remove all from `<tr>` downwards and then append the clones.
Russ Cam