2011-02-20 2 views
0

Вот противоречивое выход печатается JQuery в Firebug консоли, когда я делал некоторые отладки на странице, которая не вела себя так, как я намеревался:JQuery Firebug консольный вывод вопрос

>>> $("input.rtnBtn") 
null 
>>> $('rbtn_4') 
<input id="rbtn_4" class="rtnBtn" type="submit" value="Rate" name="rate4"> 

, как может быть видно из вышесказанного, $ ("input.rtnBtn") ничего не находит - в то время как элемент с id 'rbtn_4' должен явно соответствовать. Я пропустил трюк здесь?

Как в стороне, хотя я сопоставляю по классу (поскольку идентификатор генерируется во время выполнения), на странице есть только один экземпляр - поэтому я не понимаю, почему jQuery не может соответствовать элементу. Есть идеи?

+0

Это только я, или jQuery темпераментный? Иногда это позволяет вам делать действительно потрясающие вещи так легко, а иногда даже простейшие вещи чреваты неожиданным поведением - это природа зверя jQuery - или это только я? – oompahloompah

+0

Вы имеете в виду '$ ('. RtnBtn')' или '$ ('# rbtn_4')' во втором случае? – naiquevin

+0

@naiquevin: хорошо пятнистый. На самом деле, это еще более безумное причудливое поведение. Правильный селектор должен быть $ ('# rbtn_4') - но угадайте, что, когда я попробовал это, он вернул null. Когда я пробовал $ ('rbtn_4') - это была опечатка, элемент был правильно подобран - что происходит ?! – oompahloompah

ответ

0

Я считаю, что Firebug добавляет свою собственную функцию $ в качестве псевдонима для document.getElementById(), поэтому $('rbtn_4') нашел элемент с этим ID. (Почему вам нужен элемент с тем же именем класса, что и его идентификатор, это еще один вопрос, хотя ...)

В любом случае Firebug обычно не переопределяет jQuery, но это случается со мной иногда. Решение состоит в том, чтобы просто использовать jQuery(...) в консоли. Вы также можете сделать $ = jQuery.

+0

Хм, странно, но верно. Кажется, вам нужно использовать jQuery вместо $ в консоли, иначе результаты могут быть ненадежными. – oompahloompah

Смежные вопросы