Простой селектор jQuery выбирает только первый элемент в Chrome..?
Я немного новичок в jQuery, поэтому простите, что я был плотным. Я хочу выделить все элементы <td>
на определенной странице через консоль Chrome JS:
$('td')
Но когда я это делаю, я получаю следующий вывод:
<td>Apples</td>
Разве jQuery не должен возвращать массив элементов с тегом <td>
? Почему я вижу только первый элемент, который соответствует этим критериям?
Вот сайт, о котором идет речь: http://www.w3schools.com/html/html_tables.asp
EDIT: Я хотел бы добавить, что когда я ввожу функцию jQuery в консоль Chrome, я НЕ возвращаю объект jQuery. Я получаю простой элемент HTML. Что-то должно быть неправильно с тем, как настроен/настроен мой Chrome.
Ответы
Ответ 1
Если jQuery отсутствует на веб-странице, и, конечно, никакой другой код не присваивает что-то $
, консоль Chrome JS назначает $
ярлык на document.querySelector()
.
Вы можете достичь того, что хотите, с помощью $$()
, которому консоль назначает ярлык document.querySelectorAll()
.
Чтобы узнать, содержит ли страница jQuery, вы можете выполнить jQuery
в консоли. Чтобы узнать, назначен ли jQuery для $
, вы можете выполнить $().jquery
, который вернет версию jQuery, если это произойдет.
Кроме того, есть браузерные аддоны для ввода jQuery на каждую веб-страницу.
Ответ 2
Кажется, jQuery неправильно включен для запуска на целевой странице. У меня была аналогичная проблема, и для Google Chrome она была решена следующим образом.
Добавьте закладку в свой браузер Chrome, содержащий следующий код с одним слоем, в качестве поля URL (он украшен для удобства чтения):
javascript: (function () {
var s = document.createElement('script');
s.setAttribute('src', 'http://code.jquery.com/jquery-latest.min.js');
if (typeof jQuery == 'undefined') {
document.getElementsByTagName('head')[0].appendChild(s);
}
jQuery("td.edit select option[value=BN]").attr("selected", "");
})();
Затем просто щелкните эту закладку, чтобы запустить ее. Ожидается, что он обычно включит jQuery и заставит консоль возвращать что-то вроде function (e,t){return new b.fn.init(e,t,r)}
при вводе $
.
Процесс создания закладки (также называемый букмарклет) - это короткая рука для ввода jQuery на каждой странице, с которой вы хотите работать с консолью. Однако код фрагмента также работает, если вы скопируете его прямо в консоль JS.
PS: Кредиты для фрагмента не являются моими, так как я использую его некоторое время и не могу вспомнить, откуда я это получаю.
Надеюсь, что это поможет.
Ответ 3
Если jQuery установлен, и если символ $
является сокращением для jQuery, то $('td')
возвращает объект jQuery. Но на странице w3schools, которую вы связали, я не вижу, что jQuery даже присутствует.
Если jQuery присутствовал, и отладчик не переопределил символ $
, тогда $('td')
вернет объект jQuery. Объект jQuery представляет собой объект, подобный массиву (имеет некоторые свойства массива), но он не является фактическим массивом. Если вы смотрите на вещи в консоли, вам нужно будет убедиться, что вы смотрите на сами элементы DOM, а не на содержащий объект jQuery.
Если вы хотите получить фактический массив элементов DOM, вы можете сделать это:
$('td').get();
который вернет массив элементов DOM.
Если это не сработает, вы должны проверить время своего звонка на $('td').get()
, чтобы убедиться, что все td
элементы, которые вы хотите, находятся на странице перед их поиском.
Ответ 4
Также, если вы пытаетесь сделать что-то с каждым из td, вам нужно будет использовать .each()
для их прокрутки. Например:
$('td').each(function() {
//do something relevant here
});