jQuery не работает без документа. уже на странице cfm - PullRequest
0 голосов
/ 29 марта 2012

Я довольно новичок в jQuery, и я конвертирую страницу из "обычного" javascript в jQuery на странице Coldfusion.Страница извлекается из хранимой процедуры, которая в зависимости от набора результатов изменяет страницу и количество полей ввода.На моей странице теги ввода выглядят следующим образом.

<cfinput name="#trim(characteristic_id)#_fund" id="#trim(characteristic_id)#_fund" value="#fund#" size="11" onFocus="getCurrentValue(this)" onblur="checkChange(this,'c')">
<cfinput name="#trim(characteristic_id)#_benchmark" id="#trim(characteristic_id)#_benchmark" value="#benchmark#" size="11" onFocus="getCurrentValue(this)" onblur="checkChange(this,'c')">

Событие onFocus просто сохраняет текущее значение, а событие onBlur проверяет, изменилось ли значение и имеет ли оносохраните его в массиве для дальнейшей обработки.

Лично я чувствую, что jQuery очень хорошо подходит для такого рода обработки, и это одна из главных причин, по которой я его пробую.

К моей проблеме.Прямо сейчас я заменяю обработчик события onFocus на:

$("input").focus(function(){
    alert($(this).val());
});

simple, но когда я пробую i, ничего не происходит, никаких ошибок javascript, ничего.Ничего не происходит вообще.Итак, весь другой код jQuery, который я написал, я использовал $(document).ready..., и когда я использовал это, он работал нормально.Из того, что я прочитал, пользовательский интерфейс отображается до того, как DOM будет готов, но для того, чтобы решить эту проблему, Coldfusion работает до всего остального.

Мой вопрос такой;Нужно ли помещать весь свой код jQuery в функцию $(document).ready... или есть другой способ обойти это?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Вам нужно поместить свой код в $(document).ready() или $(window).load(), если вы хотите присоединить обработчики к объектам DOM.При этом вы можете вызывать код в блоке скрипта, который загружается после элемента, которым вы хотите манипулировать, и который тоже должен работать.Однако рекомендуется использовать обработчики готовности / загрузки.

Если вы не ждете загрузки DOM, элементы еще не существуют.

У вас нетсобрать весь ваш код в один готовый блок, если вы не хотите.Вы можете иметь несколько $(document).ready() блоков.Каждый из них будет вызываться по очереди после загрузки документа. Кстати,

$(window).load() ожидает загрузки самих элементов, например изображений.

0 голосов
/ 29 марта 2012

Если вам нужно манипулировать DOM, вы должны поместить свой код внутрь $(document).ready().

Обработчик, переданный в .ready (), гарантированно будет выполнен послеDOM готов, так что обычно это лучшее место для подключения всех других обработчиков событий и запуска другого кода jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...