Подтвердить что ты не робот

Простой селектор 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.

4b9b3361

Ответ 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
});