在我的网站中,我创建了一个布局,其中<div>
是一个菜单,其中列出了一些<div>
的链接,该链接充当主页,其中显示了每个打开的链接。
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.linkpage').bind('click', function(e) {
var url = $(this).attr('href');
$('#main').load(url);
e.preventDefault();
});
});
</script>
</head>
<body>
<div id="menu">
<a href="Page1.php" class="linkpage">Page1</a>
<a href="Page2.php" class="linkpage">Page2</a>
</div>
<div id="main">
</div>
</body>
这是完整页面并在单击时打开目标div(主要)中的链接。单击位于主<div>
中的链接时会发生此问题:
<a href='Page2.php' class='linkpage'>ClickMe.</a>
这不会在同一个div中触发,但它会像target='_top'
一样打开整页,而是打开同一个页面,维护页面左侧的菜单。我要在脚本中添加什么来在正确的目标中打开链接?
提前致谢。
答案 0 :(得分:0)
在jQuery中将.bind(
更改为.live(
。
这样它就会对所有链接起作用,甚至是在脚本运行后添加到DOM的链接。它现在的方式,它只会在脚本运行时对DOM中的链接起作用。
答案 1 :(得分:0)
我和我的某个网站做过类似的事情。您要求的是将所有链接重新路由到该div,您不想只是更改目标,因为如果您刚刚更改了目标,它仍然会覆盖您的页面。
所以你基本上想要模仿帧的功能?如果这是正确的,那么你需要做一些事情来捕捉每一次点击并将其路由回来(未经测试):
$('#main').delegate('a', 'click', function(e) { // use .on() if you have 1.7
$('#main').load(this.href);
e.preventDefault();
});