$不是AJAX调用后的函数错误

Nie*_*lon 3 ajax jquery

我将无限滚动添加到WordPress网页。我正在使用jQuery使用以下代码向每三个内容项添加一个类,而没有任何问题:

jQuery(document).ready(function($) {
    $(".leden li:nth-child(3n)").addClass('last');
});
Run Code Online (Sandbox Code Playgroud)

在发现上面的代码没有在AJAX调用后显示动态内容后执行,我添加了以下代码:

jQuery(document).ajaxComplete(function($) {
    $(".leden li:nth-child(3n)").addClass('last');  
});
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是在AJAX之后添加带有jQuery的类的正确方法,但似乎像Firebug一样,它在向下滚动页面并动态加载内容后仅显示以下控制台错误:

TypeError: $ is not a function
Run Code Online (Sandbox Code Playgroud)

这使我作为JavaScript / jQuery的新手感到困惑,因为为什么在使用相同格式的第二部分jQuery中仅显示错误?据我所知,我只使用了一个不同的偶数处理程序...

我在做什么错,这也是使用AJAX动态添加内容时执行jQuery的正确方法吗?

Den*_*ret 5

当您这样做时:

jQuery(document).ajaxComplete(function($) {
Run Code Online (Sandbox Code Playgroud)

您可以$在函数范围内声明一个变量,从而遮盖外部声明jQuery)。当您不向函数传递参数时,此变量将具有value undefined

做就是了

jQuery(document).ajaxComplete(function() {
Run Code Online (Sandbox Code Playgroud)

如果要使用别名jQueryas $,请将整个代码放在这样的函数调用中:

(function($){
   $(document).ajaxComplete(function() {
      $(".leden li:nth-child(3n)").addClass('last');  
   });
   // the rest of your code using $ goes here
})(jQuery);
Run Code Online (Sandbox Code Playgroud)