0

好的,所以我有一个 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已解决。

4

3 回答 3

6

您之前已经jQuery.noConflict();在代码中做过,因此$未定义。

查看源代码的第 79 行。

于 2013-01-23T19:18:35.870 回答
3

$.noConflict();使$符号回到加载 jQuery 之前的先前定义。如果没有其他库使用该符号,则返回到undefined. 这就是它的目的。

如果您打算使用它并且不定义任何其他符号作为 的快捷方式jQuery,那么您必须使用jQueryjQuery 函数的符号而不是$.

改为这样做:

<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()要使用的处理程序中$,您可以$在闭包中重新定义,让其他库$在自己的代码中使用,但您可以在闭包内的 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>

或者,您可以为 jQuery 定义一个新的快捷方式符号:

<script type="text/javascript">
var $$ = $.noConflict();
$$(document).ready(function () {
    $$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
});
</script>
于 2013-01-23T19:19:45.503 回答
1

尝试:

<script type="text/javascript">
    jQuery.noConflict();
    jQuery(document).ready(function($) {
        $('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]').addClass('zoom');
    });
</script>
于 2013-01-23T19:18:23.277 回答