想象一下,我有两个div,左div和右div,
在左边的div我有一些按钮。当我点击主页按钮页面home.php加载到右侧div时,我使用load()函数来执行此操作,当我单击about按钮时,右侧div中加载了about.php页面。
我的问题是我在该页面中有一些其他按钮(我的意思是about.php)。当我点击它时,其他一些页面必须加载到正确的div中。
我的意思是当我点击左侧div中的about按钮时,about.php
加载到右侧div中。
我没有问题,这样做工作正常,但问题是当我点击about.php
中的按钮时,我希望about.php隐藏并加载x.php
地方(右边)。
这是我的代码:
$('#about').click(function () {
$('#rightdiv').load('about.php', function() {
$('#about_button').click(function () {
$('#rightdiv').load('x.php');
})
})
})
答案 0 :(得分:1)
首先,你不应该像你所做的那样嵌套你的点击处理程序 - 它们应该是分开的。其次,当你加载about.php时,jQuery不知道你放在DOM中的新东西。要解决这个问题,请使用事件委派,这意味着来自about.php的click事件将冒泡到加载页面时已经存在的元素。 jQuery知道该元素并将正确处理事件。
$('#about').click(function () {
$('#rightdiv').load('about.php');
});
// 'click' event delegated to 'body'
$('body').on('click', '#about_button', function () { // #about_button is in about.php
$('#rightdiv').load('x.php');
})
答案 1 :(得分:0)
您可以告诉浏览器检查a.nav
中发生的document
,而不是将事件绑定到加载的项目。
<a class="nav" href="about.php">about.php</a>
<a class="nav" href="other.php">other.php</a>
<a class="nav" href="last.php">last.php</a>
$(document).on('click', 'a.nav',function (e) {
e.preventDefault();
var page = this.href;
$('#rightdiv').load(page);
})
最好让第一个选择器($(document)
)尽可能接近实际元素,强烈建议您使用ID:
$('#rightdiv').on('click', 'a.nav',function (e) {});
在此代码段中,a.nav
中的所有#rightdiv
都会被触发,初始加载或动态显示。
答案 2 :(得分:-1)
你必须在加载那个php页面后绑定所有点击事件,所以创建一个函数,在每次.load调用之后都会这样做