2016-06-04 2 views
-6

Я работаю на Ruby On Rails и простой JQuery won't выполнить над элементом, как это:JQuery не работает сразу

$("header").hide(); 

Однако, если я оберните его в функцию и вызвать его с документом .что оно делает правильно:

function myCode() { 
    $("header").hide(); 
} 

$(document).ready(myCode); 

Почему это не работает прямо? Я установил gem jquery-rails и даже имел // = необходимый jquery.min.js в файле application.js.

Спасибо за помощь!

+1

Зачем это нужно, пока документ не будет загружен? – nicael

+1

* «Почему?» * Элемент должен существовать при запуске этого кода. Достаточно базовые основные манипуляции javscript и dom. То же, что вы не можете съесть пиццу, которая еще не доставлена ​​ – charlietfl

+2

[Почему метод jQuery или DOM, такой как getElementById, не находит элемент?] (Https://stackoverflow.com/questions/14028959/why-does -jquery-or-a-dom-method-such-as-getelementbyid-not-find-the-element) –

ответ

-2

Если документ не готов, DOM еще не построен. Элемент header не существует, когда этот код работает, поэтому ничего не происходит. Чтобы выполнить манипуляции с DOM, вы должны подождать, пока страница будет полностью загружена, то есть на $(document).ready.

+0

Не совсем точно. Целый дом необязательно должен быть загружен. Может помещать этот код сразу после элемента без '$ (document) .ready' и будет работать нормально – charlietfl

+0

Это правда, спасибо за исправление! –

+0

Я запутался .. так вы говорите, что это должно работать прямо в качестве первой строки кода для application.js? $ ("Заголовок") скрыть(). –

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