在原型存在的地方注入 jQuery - noConflict()
我只使用 webkit。我需要将 jQuery 注入到已经加载原型的页面中。我正在使用此代码来加载 jQuery。 (您可以在控制台中尝试)
var s = document.createElement('script');
s.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.js');
s.setAttribute('type', 'text/javascript');
document.getElementsByTagName('head')[0].appendChild(s);
我仅使用上面的代码就收到错误。
如何在加载时使用 noConflict() 。如果我在注入 jquery 脚本后输入以下代码,我仍然会收到错误。
$(document).ready(function() {
jQuery.noConflict();
// my thing here
});
这也会引发错误:
jQuery.noConflict();
$(document).ready(function() {
// my thing here
});
I'm using webkit only. I need to inject jQuery into a page that already has prototype loaded. I'm using this code to load jQuery. (you can try in console)
var s = document.createElement('script');
s.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.js');
s.setAttribute('type', 'text/javascript');
document.getElementsByTagName('head')[0].appendChild(s);
I get an error with just the code above.
How can I use noConflict() on load. If I put the following code after injecting the jquery script, I still get an error.
$(document).ready(function() {
jQuery.noConflict();
// my thing here
});
This also throw an error:
jQuery.noConflict();
$(document).ready(function() {
// my thing here
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
编辑:因为您正在从另一个脚本加载脚本,所以您应该将需要运行的
jQuery
代码放在脚本加载事件的回调中:另一种解决方案就是不使用这种加载 jQuery 的方法。只需对您的
元素进行硬编码,代码就会以预期的同步方式运行:
原始答案:
执行以下操作:
EDIT: Because you're loading the script from another script, you should put the
jQuery
code you need to run in a callback to a load event for your script:Another solution would be to not use this method of loading jQuery. Just hardcode your
<script>
element, and the code will run in the expected synchronous manner:Original answer:
Do this:
尝试
然后您可以将 $j 用于任何 jquery $
Try
You can then use $j for any jquery $
$ 是 jQuery(以及原型)的别名/快捷方式。 NoConflict 基本上释放了对 $ 快捷方式的控制,因此一旦调用,其他库就可以控制它。试试这个:
$ is the alias/shortcut for jQuery (as well as prototype). NoConflict basically releases control of the $ shortcut, so that once called, the other library has control of it. Try this:
在这里,您首先使用
$
然后使用jQuery.noConflict()
,问题是您(错误地)假设$
是 jQuery在设置无冲突之前:在这里,您做了相反的事情。您首先完成了无冲突位,很好,但随后继续使用
$
访问 jQuery,这将不再起作用(作为noConflict()
的直接结果> call):结合您的两项努力,您最终会得到以下结果。我还在
.ready
行中添加了$
,以便在ready
函数中您可以仍然使用$
作为您的 jQuery 参考。Here, you use
$
first and then usejQuery.noConflict()
, the problem is that you've (wrongly) assumed$
is jQuery before you've set up the no conflict:Here, you've done the opposite. You've done the no conflict bit first, good, but then continued to use
$
to access jQuery, which will no longer work (as a direct result of thenoConflict()
call):Combining your two efforts you end up with the following. I've also added a
$
to the.ready
line so that inside theready
function you can still use$
as your jQuery reference.