17

It appears that jQuery selectors are not functioning in the Chrome Console. Any type of selector returns "null". The scripts do properly run the javascript, however.

Has anyone else noticed this change or know of a fix.

Thanks.

Tim
  • 179
  • 1
  • 3

2 Answers2

17

I uncovered the cause of this in my own question.

The console injects its own function (just a shorthand) for document.getElementById(), aliased to $, which shadows jQuery's $. Easy way to check this: when you're at a breakpoint, and jQuery seems to be broken, compare the following in the console:

  • jQuery
  • $
  • window.$

The first and last will be jQuery proper, the local $ is something like:

function () {
    return document.getElementById.apply(document, arguments)
}

This is because code run from the console is wrapped in a with statement:

with (window ? window.console._commandLineApi : {}) {
with (window) {
    // the actual code you typed in here
}   
}

and window._commandLineApi.$ is the function that shadows jQuery.

stupid chrome


Found the bug in Chromium for this: http://code.google.com/p/chromium/issues/detail?id=70969

Community
  • 1
  • 1
Matt Ball
  • 354,903
  • 100
  • 647
  • 710
  • 3
    or, just type in `jQuery===$`. It will return true if jQuery has control of the $ sign. – Yahel Feb 12 '11 at 04:05
  • 1
    (and, jQuery will return a different looking function, depending on which version of jQuery you're running, so this is easier) – Yahel Feb 12 '11 at 04:05
0

Just run the following command on the console to make it work:

$ = jQuery
rsc
  • 10,348
  • 5
  • 39
  • 36