Jquery:我如何访问已经将.load()的页面元素放入新页面

时间:2012-08-23 05:30:19

标签: jquery

我是jquery的新手但是已经爱过了(我是一名php程序员)。

我刚刚使用.load()函数将其他页面中的内容加载到新页面。我能够加载内容。

但是,我现在希望访问新加载内容的一些元素,但我无法做到这一点。

  $(document).ready(function() {

      $('#signin a').click(function() {
     var url=$(this).attr('href');
      $('#loginpostion').load(url + ' #loginform');
      return false;


       $('#closebox a').click(function() {


        $('#loginpostion').removeClass()

      return false;


      }); //end click  

我现在希望从新加载的页面访问以下A标记:#closebox a

有什么我需要做的让Jquery知道“新加载的内容”现在将成为当前页面的DOM的一部分

4 个答案:

答案 0 :(得分:1)

return false;处理程序函数中删除第一个$('#signin a').click()行。它导致执行在第二个单击处理程序(到#closebox a)绑定之前返回。

答案 1 :(得分:1)

您需要将该函数委托给页面加载时存在的静态父元素。我们将此称为“冒泡”或“事件传播”。在jQuery的最新版本中,我们使用.on()函数来执行这些操作。

$(document).on('click', '#closebox a', function(){

    $('#loginpostion').removeClass()

     return false;
});

答案 2 :(得分:1)

load()使用ajax,它是异步的,因此当脚本继续运行时它会在后台加载。这意味着当您尝试访问脚本中下一行的#closebox时,它尚未存在,因为它尚未插入到DOM中。你必须等到load()函数完成,幸运的是load()有一个回调函数。此外,无论何时使用return,脚本都会结束并返回,因此您必须执行以下操作:

$(document).ready(function() {
    $('#signin a').click(function(e) {
        e.preventDefault();
        var url=$(this).attr('href');
        $('#loginpostion').load(url + ' #loginform', function() {
             $('#closebox a').click(function(e) {
                 e.preventDefault();
                 $('#loginpostion').removeClass();
             });
        });
    });
});

答案 3 :(得分:1)

您可以在load方法上使用完整的回调方法,例如:

$(document).ready(function() {
    $('#signin a').click(function() {
        var url=$(this).attr('href');
        $('#loginpostion').load(url + ' #loginform', function() {
            $('#closebox a').click(function() {
                $('#loginpostion').removeClass()
                return false;
            }); //end click  
        });
    });
});

或者您可以使用委托/ live(如果您没有使用jquery 1.7+),如果您希望所有#closebox现在或将来都存在于页面上(使用jquery和ofcouse,那么你就不能拥有和#closebox的id然后你可以使用:

$(document).ready(function() {
    $(document).on('click', '#closebox a', click() {
        $('#loginpostion').removeClass();
        return false;
    });

    $('#signin a').click(function() {
        var url=$(this).attr('href');
        $('#loginpostion').load(url + ' #loginform');
        return false;
    });
});