jQuery не находит тегов, кроме html


Я делаю приложение Rails 3.1.1 и пытаюсь добавить в него код jQuery. jQuery, похоже, ничего не делал, поэтому я добавил границу для всех элементов:

jQuery("*").css("border", "5px solid red");

При перезагрузке страницы только html имел эту границу. Я могу манипулировать, например, цветом текста всех элементов с помощью jQuery через html-тег, но не spesific id элемента или класса.

Я точно знаю, что Javascript работает и библиотека jQuery загружается:

javascript:alert($);

Приносит:

function (selector, context) {
   return new jQuery.fn.init(selector, context, rootjQuery);
}

Почему я не могу получить доступ к элементы?

6 2

6 ответов:

Оберните свою функцию init внутрь $(document).ready(); примерно так:

$(document).ready(function(){
    // your code here will get executed
    // when the document finishes loading.
    jQuery("*").css("border", "5px solid red");
});

Вы должны повторить для каждого элемента: http://api.jquery.com/each/

Вы можете получить доступ ко всем элементам, $("*") сделает это.

Если вы хотите получить доступ к элементу по идентификатору, используйте префикс #.

Для доступа по css-классу используйте префикс ..

Для доступа по типу тега html (tagName) используйте только имя. например

$('#mybox') //selects tags with id = 'mybox'

$('.myclass') //selects tags with class = 'myclass'

$('input') //selects all <input> tags

Http://api.jquery.com/category/selectors/

Скажите ответ от этого:

if (jQuery) {  
    alert('1');
} else {
    alert('0');
}

Вы должны проверить, когда вы вызываете эту функцию. Вы должны добавить эту функциональность на событие, когда весь документ загружен. Проверьте этот код:

function init(){
     jQuery("*").css("border", "5px solid red");
}

window.addEventListener('load', init, true);

Проблема решена, поскольку файлы javascript загружаются в тег head, body еще не существует, для него только добавляется граница html.