Untested...

function expand_refs (context) {
    $("xref",context||document).each(function (i) {
      var rpl = defs[$(this).attr("ref")]||0;
      if(rpl){
        var cntxt = $(rpl).insertAfter(this);
        $(this).remove();
        expand_refs(cntxt);
      }
    });
}
expand_refs();

On May 31, 11:43 pm, Andy Chambers <[EMAIL PROTECTED]>
wrote:
> Hi,
>
> I'm generating some code that looks like the snippet below.  Embedded
> within the html are some <xref> elements.  I want to expand each one
> according to the corresponding property of the defs object.
>
> My naive attempt is as follows
>
> function expand_refs () {
>     $("xref").each(function (i) {
>       $(this).replaceWith(defs[$(this).attr("ref")]);
>     });
>
> }
>
> ...but this only replaces the first level (i.e. it doesn't expand the
> "D2488" xref).  Can anyone help out?
>
> Cheers,
> Andy
>
> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
>
> <html>
>   <head>
>     <title>
>     </title>
>     <script type='text/javascript' src='/js/jquery.js'></script>
>     <script type='text/javascript' src='/js/openair.js'></script>
>     <script type='text/javascript'>defs = {  A : "<div id=\\'A\
> \'><xref ref=\\'D2488\\'></xref></div>" ,
>   D2488 : "<div id=\\'D2488\\'><span id=\\'S2489\\'>andy</span><xref
> ref=\\'D2490\\'></xref></div>" ,
>   D2490 : "<div id=\\'D2490\\'><span id=\\'S2491\\'>chambers</span></
> div>"  };
>     </script>
>
>     <style type='text/css'></style>
>   </head>
>   <body>
>     <div id='banner'>
>       <h1>
>       </h1>
>     </div>
>     <div id='content'>
>
> <div id='A'>
> <xref ref='D2488'></xref>
> </div>
>     </div>
>   </body>
> </html>

Reply via email to