jQuery选择器在控制台中无法工作

7

我真的无法解决这个问题。我运行了JS代码,'container state...'是页面上正在运行的JS的控制台日志。它显示了一个选择器,但是如果我想在控制台中执行任何操作,它只会返回null。我猜测可能是在某个地方覆盖了jQuery函数,因为如果我调用jQuery,它也会返回null。

>>> $
function()

这是我调用选择器的方式。
Container state 3 jQuery(div.module-carousel)
>>> $('body')
null  

你确定 jQuery 已经加载了吗?你有在任何地方调用 jQuery.noConflict() 吗? - Florian Margaine
2
尝试使用 jQuery('body') 看看是否有所不同。 - James Allardice
啊,烦死了,有人把 jQuery 的引用改了!呵欠 - Jamie Hutber
尝试记录$函数。如果它返回类似于function(a,b){return new e.fn.init(a,b,h)}这样的内容,则表示它是jQuery。 - Bergi
感谢所有的回答。选择了最完整的一个。 - Jamie Hutber
显示剩余2条评论
4个回答

8

jQuery使用了两个命名空间,jQuery$。另一个库也可能使用了$。尝试使用jQuery而不是$(假设它没有被覆盖):

jQuery('body');

或者将jQuery包装在一个立即执行函数中,并在其中使用$,这样您就不需要替换现有代码中的$:
(function($){
    //"$" in here is jQuery
    //code that uses $ as jQuery will work in here
}(jQuery)); //pass in jQuery and execute

7

在控制台输入任何命令之前,您可以使用此方法。

$ = jQuery.noConflict();

2
如果你的 $ 被重载了(但不是 jQuery),并且你想在控制台中使用它,只需执行以下操作:
$ = jQuery;

非常简单。

如果需要更完整的解决方案(实际开发而不仅仅是控制台),请使用@Joseph the Dreamer的解决方案。


如果一个页面已经使用了不同的变量名来代表jQuery,比如说'jqry'。那么,在控制台里面如何找到这个'jqry'变量名呢?例如,我想输入'jQuery(显示变量名)',然后在Chrome控制台里面打印出'jqry'。你有什么好的想法吗? - ihightower

1

Firefox和Chrome都将$定义为控制台中document.getElementById的速记方式。当页面定义$时,此速记将自动被覆盖。

因此,加载jQuery(例如通过书签)即可使用jQuery选择器。

如果不需要jQuery特定的选择器,则还可以使用$$,它是document.querySelectorAll的速记方式,支持CSS(3)选择器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接