2013-04-23 4 views
0

Буду ли я безопасно перемещать этот кусок кода изнутри блока document.ready().Я уверен, что вы выполняете этот внешний блок document.ready()?

var $userInfoNode = $('#userOptions'); 
CURR_USER_ID = $userInfoNode.attr('data-userId'); 
CURR_USER_NAME = $userInfoNode.text(); 

Этот код помещается во внешнем файле JS, который загружается из head секции HTML страницы & выбирает элемент HTML, помещенный в HTML body, для извлечения данных из там.

+1

Только если этот код помещается в документ после того, как элементы, на которые он ссылается, существует. Что не так, если держать его в документе готов? – j08691

+0

Будет работать только из docready, если он будет размещен после библиотек (jquery в этом случае) И после того, как элемент, который он ссылается, или $ ('# userOptions'), будет возвращен undefined. – RaphaelDDL

ответ

3

Короткий ответ: Нет, так как файл JavaScript помещается в заголовок.

DOM (Document Object Model) должен содержать <div id="userOptions"> при выполнении кода.

Либо вы поместите код послеdiv, например, прямо перед закрытием </body>.

Или вы поместите код в функцию $(document).ready(), которая запускается, как только DOM будет полностью загружена.

+0

OP говорит: «Этот код помещается во внешний файл js, загружаемый из раздела« head ». – Ian

+1

Спасибо, я пропустил это. Тогда нет. – David

+0

Спасибо за разъяснение –

0

Да.

Вам также необходимо убедиться, что элементы html, которые вы собираетесь указывать, появятся перед вашим javascript.

в короткий пут это

var $userInfoNode = $('#userOptions'); 
CURR_USER_ID = $userInfoNode.attr('data-userId'); 
CURR_USER_NAME = $userInfoNode.text(); 

в конце вашей HTML-страницы ...

+0

OP говорит: «Этот код размещен во внешнем js-файле, который загружается из раздела' head' « – Ian

+0

@ Я знаю, что вы правы ... Я не видел этого – Zo72

2
  • из document.ready() блока.
  • внешний JS файл, который загружается из головной части
  • выбирает HTML элемент, помещенный в HTML тела

=> Нет. Вы можете попробовать и найти $userInfoNode пустой.

+0

@Blowsie Но OP говорит: Этот код помещается во внешний js-файл, который загружается из раздела 'head'. – Ian

+2

@Blowsie: вопрос явно указывает, что скрипт находится в' ', а выделенный элемент находится в ''. Вы когда-нибудь видели голову, расположенную ниже тела? – Bergi

0

Если вам нужно/нужно сохранить его во внешнем файле, вы можете поместить его в нижний колонтитул перед закрывающим тегом тела. Сначала это выглядит немного странно, но это действительно так.

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