在Chrome Dev Tools控制台中记录jQuery对象时显示元素?

Dav*_*ite 16 javascript jquery google-chrome google-chrome-devtools

最近Chrome Dev Tools似乎发生了一些变化.记录一个jQuery对象,console.log用于在控制台中显示DOM节点的Element.像这样的东西:

[<a href="#employees">Employees</a>]
Run Code Online (Sandbox Code Playgroud)

现在它已经改为像这样的可点击对象:

[<a>, context: <a>]
Run Code Online (Sandbox Code Playgroud)

有没有办法回到旧式的对象日志记录甚至是不同的方法来调用console

我目前正在使用版本23.0.1271.64.不确定哪个版本带来了变化.

J.W*_*lls 22

如果希望console.log()吐出DOM元素,则需要记录DOM元素而不是jQuery对象.DOM元素始终可以作为jQuery选择器的第0个元素访问.那么,从jQuery选择器访问实际DOM元素的方式如下:

   $("#someSingleDOMObjectSelector")[0]
Run Code Online (Sandbox Code Playgroud)

要使DOM元素以您希望的方式显示在日志中,您可以这样做:

   console.log($("#someSingleDOMObjectSelector")[0]);
Run Code Online (Sandbox Code Playgroud)

对于包含/返回多个DOM元素的jQuery选择器,您可以循环它们,如下所示:

   $('.someMultipleDOMObjectSelector').each(function(){
           //console.log($(this)[0]); //or -->
           console.log(this);
   });
Run Code Online (Sandbox Code Playgroud)

至于为什么Chrome的开发工具会这样做,我只能猜测它已经完成,因为将jQuery对象记录为对象更有意义.

  • 为什么你会这样做`$(this)[0]`这与只使用`this`相同? (3认同)

bre*_*ine 7

我发现这有用:

console.log.apply(console, $("a"));
Run Code Online (Sandbox Code Playgroud)

此外,如果您console.log = inspect;从控制台内部运行,事情将以旧方式输出,但如果您只是从代码中执行此操作,它就不起作用,它必须来自控制台.