jquery - ajax加载后无法选择元素

标签 jquery ajax wordpress

我正在使用 WordPress 主题 TwentyTwelve,它似乎通过 ajax 请求加载页面。我有一个按钮(#header-navigation-link),可以显示和隐藏页面上的另一个元素。它在没有 ajax 调用的情况下在第一个页面加载时工作,但是当我导航到另一个页面时,ajax 加载它,并且我的程序不再找到#nav-mobile-wrapper。

        $(document).on('click', "#header-navigation-link", function () {

        $(document).find("#nav-mobile-wrapper").fadeToggle();
        alert( 'Success!' );
    });

在所有 ajax 加载的页面上,警报总是弹出,因此它正在查找按钮,而不是要显示和隐藏的元素。我还尝试交换两者,因此您可以单击 #nav-mobile-wrapper 来切换 #header-navigation-link,反之亦然也会发生同样的事情。

我在此函数中定位 #nav-mobile-wrapper 时缺少什么?

感谢任何可以提供帮助的人!

最佳答案

这个元素(“#nav-mobile-wrapper”)也是由ajax生成的吗?如果是这样,请确保您的点击函数和生成该元素的位置位于同一“范围”内。例如:

$( document ).ready(function() {
      $.ajax({
       // this is where you send the ajax request to server
      }).done(function(response){
       //because you said, it loaded page via ajax request, so page's loading and #nav-mobile-wrapper's generating probably happened here
       // If so, try put your click function here, inside the 'done' block!
       $(document).on('click', "#header-navigation-link", function(){
       // your stuff
     });
   })

我认为为什么你的函数不起作用只是因为它找不到#nav-mobile-wrapper元素。没有你的代码,这是我能想到的最好的猜测。不管怎样,如果您仍然遇到这个问题,请告诉我。

顺便说一句,我想

$("#header-navigation-link").on('click',function(){
// you code
});

是一种更简单的书写和阅读方式:)

关于jquery - ajax加载后无法选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18929554/

相关文章:

jQuery ajax 和 "when"函数

javascript - 循环 JSON 时无法读取未定义的属性 0。

javascript - jqGrid - colNames 和 <> colModel 的长度!错误

jquery - Facebook 喜欢并在 ajax 上分享按钮

wordpress - 从 ubuntu 重新安装 wordpress

wordpress - 将类添加到 wp_nav_menu 中的 li 元素

javascript - 使用 Wordpress REST api 创建帖子时如何设置自定义元值

javascript - 调用运行不完整的操作结果的脚本

Javascript window.open 和打印导致 IE8 挂起

ajax - 在测试中获取CSRF token , "CSRF token is invalid"- 功能性ajax测试