好吧 - 我正在使用带有 jQuery 的 ASP.NET MVC。我没有对应用程序的这一部分使用部分视图(ascx),而是唱完整视图,但将它们加载到 div 中。因此,我有一个主视图,其中包含一些对 js 文件的引用,该文件是这种“类型”视图的客户端逻辑。当单击此视图上的某个选项卡时,我们使用 jquery 选项卡将另一个视图“加载”到某个 div 中。使用此插件加载选项卡的方式是简单地提供一个 url(而不是使用 load - 正如所指出的 - 我可以添加一个回调函数而不是依赖于 ready)。
然而。我不希望所有客户端逻辑都在某个父视图中,因为任何视图都应该能够通过 url 加载另一个视图(子视图包含指向其相关 js 文件的链接,该文件包含加载时格式化/连接的所有逻辑)。
现在让我真正感到困惑的是,它似乎在某些情况下有效,而在其他情况下则无效。例如 1) 当父视图在 IE 的框架中打开时,子视图准备就绪 2) 直接在 IE 中打开相同的 url 时,子视图准备就绪 3) 在 FFX2 中打开相同的 URL 时准备好每个都不会触发 4) 最后.. 但是当在 FFX2 中打开该父级的子视图(具有子视图)时,触发了子就绪事件!.. 莫名其妙..
我要运行一些测试然后回复你,但是任何关于为什么这种行为可能不同的建议将不胜感激
更新:啊哈!..看起来即使清除了上述障碍,也存在浏览器差异(显然来自上面的阅读)..下面的简单测试在 IE7 中运行良好,但在 FFX2 中失败。将 Test2.htm 加载到 Test1.htm 时,会在 IE 中触发 ready 事件,但不会在 FFX 中触发。根据经验,我知道这意味着 IE 有一个“怪癖”,而 FFX 正在按照您所期望的基于 W3C 的方式工作。所以看起来这种方法是不可以的,除非有人有任何建议?:
测试1.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script type="text/javascript" language="javascript" src="Scripts/jquery-1.3.2.js"> </script>
<script type="text/javascript" language="javascript">
<!--
$(document).ready(function() {
alert("Test1.htm");
$("#Test1").load("Test2.htm");
});
//-->
</script>
</head>
<body>
<h3>SOME TEST</h3>
<div id="Test1">EMPTY</div>
</body>
</html>
测试2.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script type="text/javascript" language="javascript" src="Scripts/jquery-1.3.2.js"> </script>
<script type="text/javascript" language="javascript">
<!--
$(document).ready(function() {
alert("Test2.htm");
//$("#Test1").load("Test3.htm"); // load more
});
//-->
</script>
</head>
<body>
<h3>SOME TEST</h3>
<div id="Test2">EMPTY</div>
</body>
</html>