1

我在主页上有一个滑块,我正在尝试通过单击使用 Ajax 的按钮来加载接下来的五个帖子。当我使用 Jquery .post 加载接下来五个帖子的 html 时,滑块消失了。原因是名为“slider.js”的脚本不适用于新添加的 html。我尝试使用 .live() 但它不起作用,我可以在控制台中看到来自 Ajax 调用的响应,所以我知道该调用正在工作。我尝试在 Ajax 响应中包含 js 文件,但即使那样它也不会触发。js文件是一个很长的文件,有很多功能,我不能按照论坛上一些人的建议将它包含在一个功能中。我将如何重新加载 slider.js 以使其工作?这是 ajax .post() 代码。

$(function() { 

   $('.nextfive').live('click', function() { 

      var data = {action: 'next_five',next: 5};

      jQuery.post("<?php echo admin_url('admin-ajax.php'); ?>", data,

      function(response) {

             $('#navi').slideDown("slow");  
             $("#slidercontainer").html(response); 

          },"html");   

      }); 
}); 

编辑:检查http://axactsoft.com/samplewp/上的页面,然后单击顶部的按钮“单击五”。文件的代码粘贴在这里http://pastebin.com/4iS6Ey10

4

2 回答 2

1

试试这个:

$('.nextfive').on({ 

    click: function () {

              var data = {action: 'next_five',next: 5};

              $.post("<?php echo admin_url('admin-ajax.php'); ?>", data,

              function (response) {

                 $('#navi').slideDown("slow");  
                 $("#slidercontainer").html(response);
              }
     }    

}, 'body'); 

您必须使用 jquery 1.7 或更高版本才能使用 .on() 函数。如果不查看您正在使用的所有 div ID 的 HTML 结构,就很难知道您在做什么。

我还建议拆分您的代码:您有一个事件处理程序,其中包含一个用于 ajax 的函数,该函数本身嵌套了一个函数来处理 ajax 回调。我会让事件处理程序处理事件并将参数传递给仅处理 ajax 的不同函数,并让该函数调用仅处理 ajax 响应处理的函数。您应该在同一范围内使用 3 个函数,而不是让 3 个函数相互嵌套。

于 2012-04-04T20:14:43.900 回答
1

你用的是什么slider.js?在从 php 脚本获取数据后,您可能可以添加一个事件侦听器来重新初始化滑块。像这样的东西,尽管它会根据滑块的工作方式而有所不同。

$('.nextfive').click(function () {
    $.get("<?php echo admin_url('admin-ajax.php'); ?>",
          {action :'next_five', next   : 5},
          function (resp) {
              $('#navi').slideDown("slow");  
              $("#slidercontainer").html(response)
              $("#slidercontainer").slider(); /* This will change depending on
                                               * the library you are using */
    });
})

另外,关于您的编码风格的一些事情:

  1. 当您获取诸如下五个帖子之类的数据并且修改数据时,请始终使用 GET 而不是 POST。通常,除非您在服务器上修改某些内容,否则始终使用 GET,在这种情况下您使用 POST。
  2. jQuery.* 可以替换为 $.*,请参见上面的示例。
  3. 将单击处理程序附加到元素的最简单方法(即,当您单击某物时发生某事)是使用 jQuery 中的 $(elem).click() 函数,请参阅我的示例。

如果您提供有关您正在使用的滑块的更多详细信息,我可以提供更具体的代码。

祝你好运!4. 其他小的简化,如果你只使用一次,你不需要定义var数据,再看我的例子。

于 2012-04-04T20:30:21.237 回答