0

我正在创建一个脚本,允许我根据 URL 的主题标签启动弹出窗口。当用户直接在地址栏中插入 URL + 哈希时,我可以让它工作。但是,当单击锚链接时,脚本似乎没有执行 .load() 函数。我的排序是错误的,还是我的做法完全错误?

<script>
$(document).ready(function() {
var loc = window.location.hash;
var container = $('.container');
 if ( loc == "#content1" ) { $('.container').load('content1.html') }
 if ( loc == "#content2" ) { $('.container').load('content2.html') }
});
</script> 
<body> 

<ul class="navigation"> 
<li><a href="#content1">Launch content1</a></li> 
<li><a href="#content2">Launch content2</a></li> 
</ul> 

<div class="container"></div> 

</body>
4

3 回答 3

0

感谢@hundredwatt,该插件完全有效!我用一些 function() 动作进一步压缩了代码:

$(window).bind('hashchange', function() {
 pageCaller();
});

function pageCaller() {
 var loc = window.location.hash;
 var container = $('.container');
 if ( loc == "#content1" ) { $('.container').load('content1.html') }
 if ( loc == "#content2" ) { $('.container').load('content2.html') }
}

pageCaller();
于 2010-06-29T22:05:07.470 回答
0

您将需要创建一个要调用或使用的函数window.location或类似的东西来获得您想要的东西。您的 jQuery 代码仅在页面加载后立即运行,并且仅单击这些链接不会重新加载页面。

于 2010-06-29T21:37:38.477 回答
0

您的脚本只会在页面首次加载时运行。单击包含散列片段的锚点时,页面不会重新加载,因此 $(document).ready... 中的脚本不会再次运行。

我想你想添加 jQuery Hashchange 事件插件:http ://benalman.com/projects/jquery-hashchange-plugin/

然后您可以将操作绑定到 hashchange 事件,当用户通过单击您的链接更改哈希片段时,该事件将执行回调。您的脚本最终将类似于:

$(window).bind('hashchange', function() {
 pageCaller();
});

function pageCaller() {
 var loc = window.location.hash;
 var container = $('.container');
 if ( loc == "#content1" ) { $('.container').load('content1.html') }
 if ( loc == "#content2" ) { $('.container').load('content2.html') }
}

pageCaller();
于 2010-06-29T21:39:42.827 回答