2010-04-23 56 views
0

我有一个带有(除其他外)Unity3D窗口的html页面。我想替换页面上的所有内容,而不会导致Unity窗口重新加载。我曾尝试以下jQuery的tastic用另一个文档替换html元素的环绕

function replaceSurround(keepElem, newElem) 
    { 
     keepElem.siblings().remove(); 
     keepElem.prepend(newElem.prevAll()); 
     keepElem.append(newElem.nextAll()); 

     var keepParent = keepElem.parent(); 
     var newParent = newElem.parent(); 
     if (keepParent && newParent) 
     { 
      replaceSurround(keepParent, newParent); 
     } 
    } 

其中keepElem是一个元素在原始文档中和newElem是新文档中的相应元素,但它并不能很好地工作。

+0

这不是我见过的jQuery – SeanJA 2010-04-23 22:43:59

+0

@SeanJA,当然jQuery提供了'siblings'选择器,但我承认这不是特别的jQuery。 :) – KvanteTore 2010-04-25 22:23:52

回答

0

这里是我得到了什么,它似乎工作...

jQuery.fn.rewrap = function(newWrap){ 
    var $parent = jQuery(this).parent(); 
    var $clone = jQuery(this).siblings().clone() 
    var $newParent = $clone.wrap(newWrap).parent().clone(); 
    $parent.replaceWith($newParent); 
} 


$('#header').rewrap('<div class="container" style="background-color:blue;" />'); 

我测试了它的#1网站。但是有一个小问题,它似乎正在引发一些onX事件......?

[编辑]

关于第二个想法,这不是你的意思在所有....

你就不能这样做:

$('#result').load('ajax/test.html #result'); 

+0

我的主要问题是我需要重新加载一堆JavaScript文件(我试图改变我的网站的区域设置,而不重新加载统一窗口,并且我的所有脚本文件已经分别编译为每个区域设置),并且因为这些脚本在重新加载时可以做的很少,我不认为我会有很多运气,我不得不重新加载整个页面。谢谢你的努力:) – KvanteTore 2010-04-25 22:28:48