Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery:如何访问已被.load()加载到新页面中的页面元素_Jquery - Fatal编程技术网

Jquery:如何访问已被.load()加载到新页面中的页面元素

Jquery:如何访问已被.load()加载到新页面中的页面元素,jquery,Jquery,我不熟悉jquery,但已经喜欢它了(我是一名php程序员) 我刚刚使用.load()函数将内容从另一个页面加载到新页面。我可以加载内容 然而,我现在希望访问新加载内容的一些元素,但我无法做到这一点 $(document).ready(function() { $('#signin a').click(function() { var url=$(this).attr('href'); $('#loginpostion').load(url + ' #lo

我不熟悉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的一部分

删除第一个
返回false$(“#登录a”)的代码>行。单击()
处理程序函数。它导致在绑定第二个单击处理程序(to
#closebox a
)之前返回执行。

删除第一个
返回false$(“#登录a”)的代码>行。单击()
处理程序函数。它导致在绑定第二个单击处理程序(to
#closebox a
)之前返回执行。

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

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

    $('#loginpostion').removeClass()

     return false;
});

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

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

    $('#loginpostion').removeClass()

     return false;
});
load()
使用ajax,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();
             });
        });
    });
});
load()
使用ajax,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();
             });
        });
    });
});

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

$(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  
        });
    });
});
或者您可以使用委托/活动(如果您没有使用jquery 1.7+),如果您希望现在或将来页面上存在的所有#closebox a元素(使用jquery和Ofcuse,则您不能拥有和id为#closebox),那么您可以使用:

$(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;
    });
});

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

$(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  
        });
    });
});
或者您可以使用委托/活动(如果您没有使用jquery 1.7+),如果您希望现在或将来页面上存在的所有#closebox a元素(使用jquery和Ofcuse,则您不能拥有和id为#closebox),那么您可以使用:

$(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;
    });
});


返回false
单击处理程序中。她的代码需要两个
}
@undefined-是的,但有两个?@adeneo一个用于第一个
点击
处理程序,另一个用于
就绪
@undefined-
就绪
未关闭,第一个用于第一个点击处理程序,第二个用于第二个点击处理程序,但是它永远不会到达那里,因为它在第二个单击处理程序之前返回(它在第一个处理程序中)。@adeneo Correct,
ready
还没有关闭,我想她只是忘记了关闭/发布第一个和最后一个
}
返回false
单击处理程序中。她的代码需要两个
}
@undefined-是的,但有两个?@adeneo一个用于第一个
点击
处理程序,另一个用于
就绪
@undefined-
就绪
未关闭,第一个用于第一个点击处理程序,第二个用于第二个点击处理程序,但是它在第二个点击处理程序(它在第一个点击处理程序中)返回之前从未到达那里。@adeneo正确,
ready
还没有关闭,我想她只是忘记了关闭/发布第一个和最后一个
event.preventDefault()
优于
返回false因为它可以出现在回调中的任何位置,并且在它所做的事情上更加明确。
return false
也会停止在jQuery中的传播,否则也是一样的。我通常使用
preventDefault
,除非我也打算停止传播。大家好。我尝试了上面的代码,但是.removeClass不起作用。我测试了代码。i、 我使用了一个警报来查看最后一次单击是否有效,以及警报是否有效。所以,问题在于remove类。它没有删除元素。
removeClass()
只是删除一个类名,而不是整个元素,并且在不指定类的情况下调用removeClass会删除元素附加到它的所有类。如果您试图从DOM中删除整个
#loginpostation
元素,则应改用
remove()
。大家好。我已经解决了这个问题。代码现在起作用了。非常感谢大家在这件事上给予的帮助。事实上,我从所有人的精彩评论中学到了很多,他们都做了同样的事情,但我明白你的观点——使用
event.preventDefault()
return false更好因为它可以出现在回调中的任何位置,并且在它所做的事情上更加明确。
return false
也会停止在jQuery中的传播,否则也是一样的。我通常使用
preventDefault
除非