好的,所以我有一个WordPress网站。它使用了相当多的jQuery脚本,jQuery被加载到页面的头文件中。我有一小段代码,应该简单地为图像链接添加一个类。我已经将它放在文档的底部,就在</body>
标记之前。
<script type="text/javascript">
$.noConflict();
$(document).ready(function () {
$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
</script>
脚本不起作用,Firebug给了我$ is undefined
错误。我检查了各种类似的其他问题,答案似乎没有帮助。
源页面位于:http://sergedenimes.com/2013/01/bruno-bisang-30-years-of-polaroids/
我确定这是另一个导致冲突的插件,但我会很感激如何解决这个问题。
编辑:哇谢谢你的快速反应。似乎它是一个早期的插件呈现$
未定义。用jQuery
替换已经解决了。
答案 0 :(得分:6)
您之前已在代码中jQuery.noConflict();
执行了$
未定义。
查看源代码的第79行。
答案 1 :(得分:3)
$.noConflict();
使$
符号在加载jQuery之前返回到之前的定义。如果没有其他库使用该符号,则返回undefined
。这就是它的目的。
如果您打算使用它而不是将任何其他符号定义为jQuery
的快捷方式,则必须使用jQuery
作为jQuery函数的符号,而不是$
。
请改为:
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function () {
jQuery('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
</script>
或者,如果您只是尝试在$
处理程序中使用.ready()
,那么您可以使用.ready()
这样的功能分配它:
<script type="text/javascript">
$.noConflict();
jQuery(document).ready(function ($) {
$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
</script>
或者如果您的代码不只是.ready()
处理程序中想要使用$
的代码,您可以在一个允许其他库使用{{1}的闭包中重新定义$
在他们自己的代码中,但您可以在闭包内的jQuery代码中将它用于jQuery:
$
或者,您可以为jQuery定义一个新的快捷符号:
<script type="text/javascript">
$.noConflict();
(function($) {
$(document).ready(function () {
$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
$.each(whatever...)
})(jQuery);
</script>