JQuery的wrap方法如何实现?

Coordinator
Nov 17, 2010 at 6:19 AM

今天有人问起这个问题,其实很简单,可以自己写一个扩展方法:

  public static class WrapExtensions
  {
    public static IHtmlElement Wrap( this IHtmlNode node, string wrapperName )
    {
      if ( node == null )
        throw new ArgumentNullException"node" );

      if ( wrapperName == null )
        throw new ArgumentNullException"wrapperName" );

      if ( node.Parent == null )
        throw new InvalidOperationException();

      var factory = node.Document.GetNodeFactory();

      var wrapper = factory.CreateElement( wrapperName );

      wrapper.AppendCopy( node );

      return (IHtmlElement) node.Replace( wrapper );
    }
  }