如何防止jquery删除标记

如何防止jquery的默认行为剥离我的JS?

function callBackFunctionLoadPage(data) { var data = $(data).find('#content'); alert($(data).html()); $("#content").html(data); $("#page").fadeTo(100,1); } function loadPage(url,parm) { //alert(url); loadNextBackInPage_URL = url; $("#page").fadeTo(100,.2); $.post(url,parm,callBackFunctionLoadPage); } 

在我的代码中我想要标签,但jquery剥离它们:

原始代码:

 

Kannada on campus - photos

 

 

Galleria.loadTheme('galleria/themes/classic/galleria.classic.min.js'); $("#gallery").galleria({ width: 500, height: 500 });

但是来自jquery:

 

Kannada on campus - photos

 

 

编辑

这是我正在加载的实际html页面

     Kannada on campus        
Follow us on twitter Follow us on twitter Follow us on twitter Follow us on twitter

Kannada on campus - photos

 

 

Galleria.loadTheme('galleria/themes/classic/galleria.classic.min.js'); $("#gallery").galleria({ width: 500, height: 500 });
 

var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-23549810-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();

我建议你做不同的事情。 首先,ajax调用很好,因为它们是轻量级的,因此您可以只获取更新的数据并在必要时注入, 而不是加载整个页面。 如果您正在获得一组包含脚本的标记,那么您实际上是使用ajax来执行正常的http页面请求。 这就像看超市里的快线(10件或更少)并看到它比你现在所站的岛屿移动得更快,所以你搬到那里。 但如果你为每个请求都这样做,你最终会将快车道变成正常的车道。

从服务器获取javascript代码以执行通常表明您没有正确思考问题,因为您的混合域可怕。

首先,为什么不只是每次你在下一页/画廊中执行一个函数? 为什么需要从服务器获取代码? 根据我的第一点,为什么不只是获取一系列新的文件名并从中构建新的库?

如果由于某种原因你觉得你想继续这种方式(我应该在这一点上指出以这种方式执行代码不只是不好的做法,但在某些情况下不安全),你可以提取代码并评估它:

假设只有一个代码块,它包含在 (没有考虑各种空白和有趣的字符):

 function callBackFunctionLoadPage(data) { ... eval(data.match(/ 

UPDATE

jquery剥离了javascript,但它仍然执行它:

 $('#content').html('
');

因此,如果已经执行了内容,几乎没有理由想要脚本标记本身...

更新2(非信徒)

 var scriptDiv = $('
'); alert("not yet"); // the above is created but not executed until added to the DOM $('body').append(scriptDiv); // there you go, proof that it is executed alert(scriptDiv.html()); // to prove that the script was stripped

你尝试过使用JS的原生innerHTML吗?

 $("#content").get(0).innerHTML = data; 

如果这有效,正如davin指出的那样,你仍然需要评估脚本:

 eval(data.match(/ 

加载和评估SCRIPT表单AJAX应该可以正常工作。