将一些脚本加载到wordpress

时间:2015-10-07 11:31:14

标签: javascript jquery angularjs wordpress typeerror

我们开始提供像谷歌或Facebook那样的HTML-Snippet,用于广告或者像Facebook一样按钮。它包含一个业务应用程序。

我们的HTML-Snippet加载脚本并包含更多信息:

<div id="ncc" data-hash="" ng-jq>
<div id="wiz" ng-controller="WizardCtrl"></div>
<script src="{{URLTOSCRIPT}}/load.js"></script>
</div>

该脚本检查是否安装了jQuery,并将所有相关内容加载到DOM中,并将其加载到angular-Application中。

所有这些在没有启用jQuery.noConflicts-Mode的页面上都能正常工作。

在最新的Wordpress-Updates之后我们得到了一个ERROR

  

“TypeError:$不是函数”

我们试图使用像

这样的工作来摆脱它
jQuery(document).ready(function($){

    $(function () {
    //code to execute
});

OR

jQuery(document).ready(function(){
    var j = jQuery.noConflicts();
    j(function () {
    //code to execute
});

并且还改变了角度部分中的所有引用。但没有什么工作得很好。

有什么建议吗?

我们正在使用AngularJs v1.4.7,jQuery v1.11.3(开始迁移到2.1.4),

6 个答案:

答案 0 :(得分:1)

确保在使用某些jQuery函数的任何其他脚本之前加载jQuery。

答案 1 :(得分:1)

有时,当加载更多版本的jQuery或者它与另一个库冲突时,您可能会收到该错误:

您是否尝试在所有代码中使用“jQuery”替换$符号?

所以你的例子会变成:

jQuery(document).ready(function(){

    jQuery(function () {
    //code to execute
});

注意:我认为在这种情况下不再需要传递“$”作为参数;)

编辑:还有另一种可能性:

你说你正在以这种方式使用$符号(我猜这是为了避免wordpress中常见的冲突):

jQuery(document).ready(function($){

    $(function () {
    //code to execute
});

但是这将使$符号仅在ready()函数内可用。

你有没有检查你是否有使用$实际上不允许的地方的代码(换句话说,如果你有任何你的js代码,其中$未被映射为“jQuery”)?

编辑2:最终唯一可行的解​​决方案是:

(function($,undefined){ 
   $(document).ready(function(){ 
     //code to execute 
   }); 
})(jQuery);"

答案 2 :(得分:0)

通常,当尚未加载jQuery库时会出现这些错误。确保在加载jquery后调用$() - 调用,这通常发生在文件末尾,以加快加载时间。

因此提出

<script src="{{URLTOSCRIPT}}/load.js"></script>

到body-tag的末尾应该有帮助。

答案 3 :(得分:0)

通常当您收到此错误时:“TypeError:$不是函数” 这意味着,您缺少一个JQuery库,或者它们没有按正确的顺序放置。订购JQuery库非常重要。

答案 4 :(得分:0)

$不是一个功能。这意味着有一个名为$的函数,但它没有名为selectable的插件/小部件。所以,有些东西偷了你的$,或者在它之后添加了另一个库,或者它从未加载过。

答案 5 :(得分:0)

您的脚本文件未正确加载或脚本文件不可用。 打开浏览器检查元素并放入此代码 jQuery的()。jquery的。 它显示了使用哪个jquery版本。 这是为了测试 jQuery的(文件)。就绪(()的函数 {

警报(&#34;测试&#34); });