【发布时间】:2015-03-22 12:48:42
【问题描述】:
由于 Wordpress 在非冲突模式下加载 jQuery,我必须将我的脚本包装在 jQuery(function($){...}) 中
父脚本按预期执行。 但是,我有条件地通过 getScript 加载第二个脚本:
$.getScript('js/2nd.js').done(function() {
editElem();
});
我还需要将所有内容都包含在“2nd.js”中吗?如果我不这样做,什么都不会发生 - Chromes 控制台中甚至不会引发错误。如果我包装它,它会说“editElem 未定义”——尽管我的“2nd.js”当然定义了它。
感谢您的见解。
【问题讨论】:
-
几个月前我遇到了同样的问题。我的解决方案是,定义函数(在你的情况下为editElem),如 var tmpFnc = new Function('alert(\'hello\')');并在使用 tmpFnc() 加载脚本后调用 tmpFnc; .这就像 eval('alert(\'hello\')');希望这对您有所帮助。
-
哇,这不是很漂亮吗?我的 2nd.js 里面有很多大功能...
-
可能是你有任何运行时冲突。我查看了当前的项目代码。我有几个功能,这取决于用户权限。 $.getScript 由像这样的另一个先前函数触发... function login_action(){ $.getScript('core/login/login_action.js.php'); login_display_fadeout();这有效。不用担心 .php,它会生成 javascript 输出。
-
这是在无冲突模式下运行的吗?除了无冲突模式,我没有任何问题!
-
很高兴,会这样做