我试图加载使用jQuery .load方法,所以我所有的网页,这就是我的网站看起来:

<script type="text/javascript">  
  $(function() {
    $('.link').bind('click', function(e) {
            var page = $(this).attr('href');
            $('#site').addClass('loading');
            $('#content').load(page, function (){
            $('#site').removeClass('loading');
    });

    e.preventDefault();
    return false;
  });

<a href="test.php" class="link">Test</a>

有了这个代码,每一个获取类=“链接”的链接将加载在DIV#内容我的网页。 工作正常!没有问题,但是当我加载test.php的,如果我使用的任何链接或按钮,或任何对类=“链接”,这是行不通的,新的页面加载我的#内容之外。

已经尝试过将它复制到新加载的文件,这是行不通的,任何人有提示吗?

由于

有帮助吗?

解决方案

这是因为,当绑定事件它只它结合到处于此时的DOM元素。所以,如果你添加新的以后就不会被绑定到事件先前附。假设你已经jQuery的1.3,它有一个内置功能来解决这个问题称为 live 。有了它,你可以绑定一个事件到所有当前和未来元素。它不支持所有的事件,但click它不支持。

所以,牢记这一点,你就必须更换这样的:

$('.link').bind('click', function(e) {

通过这样的:

$('a.link').live('click', function(e) {

(I添加的一个。给选择器,因为它是更有效的,以指定所述标签,如果在所有可能的)

如果您还没有的jQuery 1.3,你应该尽快升级。如果不能,请查看的liveQuery 插件,可以实现同样的事情,但在一个多那么优雅的方式。或者,你可以只需要绑定的动作,每次调用它,你在加载新数据的功能。所有的事情考虑,但是,jQuery的live是做到这一点的最好办法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top