我认为这个问题以前没有提出过,至少不是我需要回答的问题.我正在使用jQuery的.load函数.加载页面片段时遇到问题.
使用类似的东西时:
$('#content').load('loadTest.html');
Run Code Online (Sandbox Code Playgroud)
loadTest.html上的所有脚本加载都很好.但是,在加载页面片段时,如下所示:
$('#content').load('loadTest.html #content');
Run Code Online (Sandbox Code Playgroud)
在更新DOM之前删除脚本
这在http://api.jquery.com/load/中有明确记载,其中说:
注意: 使用不带后缀选择器表达式的URL调用.load()时,会在删除脚本之前将内容传递给.html().这将在丢弃之前执行脚本块.但是,如果使用附加到URL的选择器表达式调用.load(),则在更新DOM之前会删除脚本,这就是它们永远不会被执行的原因.两种情况的示例如下所示:
我知道我可以在外部加载可以在任何地方使用的脚本,但问题是,我正在使用页面范围的ajax系统,其中所有内容都是动态加载的.所以我真的不喜欢在外部文件中使用我将要编写的每个javascript函数(此时为100).特别是因为其中一些javascript函数是从数据库加载的值中创建的,我无法在.js文件中考虑这些值.
在更新DOM之前,是否有任何解决方法可以删除脚本?我能以某种方式手动加载它们吗?任何微小的例子对我都有帮助.
我有一个完全由ajax驱动的网站,所以最近我不得不研究委托技术.我已经了解到.live和.delegate已被弃用,新的功能是.on.
如果我正在动态地将网页加载到当前页面(AJAX)上的一个部门中,如下所示:
<html>
<head>
<script src="jquery.js">
</script>
<script>
function ajaxTest()
{
$('#content').load('test.php');
}
</script>
<script type="text/javascript">
$(function(){
$(document).on("click", "#map", function(){
alert("it has been loaded");
});
});
</script>
</head>
<body>
<div id="content">
<button onClick="ajaxTest()" value="Click Me">
This is to be clicked
</button>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
test.php的样子
<html>
<head>
</head>
<body>
<div id="map">THIS IS THE MAP</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后我可以点击"这就是地图"这个词,它确实显示了警报.我遇到的问题不是做:
$(document).on("**click**", "#map", function(){
Run Code Online (Sandbox Code Playgroud)
我需要更多的东西:
$(document).on("**load**", "#map", function(){
Run Code Online (Sandbox Code Playgroud)
它显然不起作用,所以我想知道是否有类似的东西.我甚至询问这个问题的全部原因是因为在某些页面中,我没有在地图分区中使用"这是地图",而是使用谷歌地图或swf对象.任何帮助,将不胜感激.
如果您只是想回答如何将谷歌地图加载到尚不存在的部门,那也会有所帮助;)
我刚刚开始使用Google Maps API.这个问题很容易理解,但我不知道如何解决它.这是Google为您提供的除警报之外的简单代码示例.
function initialize() {
var mapOptions = {
center: { lat: 43.680039, lng: -79.417076},
zoom: 13
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
google.maps.event.addListener(map, 'dragend', change );
google.maps.event.addListener(map, 'zoom_changed', change );
alert(map.getBounds().getNorthEast().lat());
}
google.maps.event.addDomListener(window, 'load', initialize);
Run Code Online (Sandbox Code Playgroud)
map.getBounds().getNorthEast().lat()从除load之外的任何其他事件调用时起作用.当它是一个像缩放或拖动的地图事件时,它工作正常,但当我尝试在这里调用它时,我得到错误"Uncaught TypeError:无法读取未定义的属性'getNorthEast'".任何人都知道这里有什么或我如何解决这个问题?