Side navigation
#14279 closed feature (notabug)
Opened August 21, 2013 08:32AM UTC
Closed August 21, 2013 02:59PM UTC
Last modified August 22, 2013 03:38PM UTC
$.debug() for selector debugging
| Reported by: | f.bagnardi@gmail.com | Owned by: | |
|---|---|---|---|
| Priority: | undecided | Milestone: | None |
| Component: | unfiled | Version: | 1.10.2 |
| Keywords: | Cc: | ||
| Blocked by: | Blocking: |
Description
jQuery is great until you make a typo in a selector. When developing, I want to be able to have console warnings for selectors that match no elements.
When you call $.debug() it could decorate an internal function that's used in the selection process. Pseudocode:
$.debug = function(){
var original = $.someFunction;
$.someFunction = function(selector){
var ret = original.apply(this, arguments);
if (ret == null) {
console.warn(selector + " matches 0 elements";
}
return ret;
}
}
(Sorry, I'm not very familiar with jQuery internals.)
A more complicated debug function would allow enabling/disabling it, so you could do something like:
$.debug(true);
$(".someclass").find(".somechild")
$.debug(false);
It could also optionally be set differently in the production build.
$.debug = $.noop
If this isn't likely to be implemented, I would appreciate the name of a good function to replace for this, so I can build my own development version.
Attachments (0)
Change History (3)
Changed August 21, 2013 02:59PM UTC by comment:1
| resolution: | → notabug |
|---|---|
| status: | new → closed |
Changed August 21, 2013 04:17PM UTC by comment:2
Thanks. So find is called even when you do $('something')?
Changed August 22, 2013 03:38PM UTC by comment:3
Not jQuery.fn.find, but jQuery.find is called for all selectors except simple ID selectors (for which there is a fast path in $() ).
I'm not aware of a function that does that, but you could duck punch jQuery.find and send a message to the console whenever results.length is 0. This is not something we'll be adding to core though.