我读了几篇文章,劝阻WP开发人员用Google CDN版本的jQuery替换排队的jQuery。我被出卖了。
我现在正在将使用jQuery的WP jQuery版本排队。noConflict()。
然而,我在一个自制的程序中遇到了“undefined is not a function”(未定义不是函数)错误。使用$选择器的js文件。即使我将选择器更改为“jQuery”,我仍然会收到错误。我确保jquery是在之前加载的。js文件。
为了进行测试,如果我将WP jQuery排队与谷歌CDN的版本切换,则不会出现任何错误。
我希望能够使用WP的jQuery,但我似乎无法让它与自主开发的jQuery代码一起工作。
还有其他调试想法吗?
编辑:
这是一片土生土长的。失败的js文件:
var brk = {
start: function($){
$("#navigation ul li a").css("color", "#FFF").css("text-decoration", "none");
$("#topButtons a.clearbtn").css("color", "#FFF").css("background", "transparent").css("border", "1px solid #FFF");
}
}
jQuery(document).ready(brk.start($));
“undefined is not a function”(未定义不是函数)错误位于第一个$行:$(“#navigation ul li a”)。。。
最合适的回答,由SO网友:Otto 整理而成
嗯,缺点是你的代码不正确。
jQuery(document).ready(brk.start($));
这里的$指的不是任何东西。您应将其更改为:
jQuery(document).ready(function($) { brk.start($) } );
启用noConflict模式时,未定义$值。如果你想定义它,那么你必须自己定义它。
此代码:
jQuery(document).ready(function($) {
...
});
做了几件事。
首先,它将函数挂接到文档。就绪事件。其次,它定义了一个要调用的函数。第三,它将该函数中的代码的$值设置为jQuery。
您的代码没有定义函数,也没有设置$值。你想打电话给brk。从$参数开始,然后将其返回值附加到文档中。准备好的
这个brk.start(whatever)
是函数调用,而不是函数定义本身。您需要定义一个函数来将其附加到文档。就绪事件。
或者,这可能会起作用。我还没有测试过它。
jQuery(document).ready(brk.start);
brk。start(不带括号)是一个函数,因此可以用这种方式引用它。大概
尽管老实说,如果您不想将函数调用附加到文档中。准备好了,只想实时调用它,这样就可以完成任务:
brk.start(jQuery);