$ (document) .ready () не запускается после рендеринга f: ajax - PullRequest
4 голосов
/ 02 июня 2011

У меня есть код jQuery, который запускается при каждом событии $(document).ready().У меня также есть некоторые теги <f:ajax>, которые выполняют повторную визуализацию некоторых частей страницы.

Я заметил, что при повторной визуализации компонента $(document).ready() не вызывается.

Есть ли способ запускать код JavaScript после каждого <f:ajax> рендеринга?(Технически я могу использовать тег onevent, но это неблагоприятное для меня решение, поскольку мне придется вызывать функцию для каждого <f:ajax>)

Просто для иллюстрации, это код jQuery:

$(document).ready(function() { ...CODE... }

И код JSF:

<f:ajax event="click" render=":someComponentID"/>

Спасибо!

ОБНОВЛЕНИЕ Этот вопрос можетбыть дубликатом этого .Я смотрю на это.

UPDATE2 Это легко решить, используя привязку события JSF Javascript:

jsf.ajax.addOnEvent(function(data){
  if (data.status === 'success') {
    // Do stuff here
  }
}

Подробнее об этом см. В справочнике JSF 2

Ответы [ 2 ]

4 голосов
/ 02 июня 2011

Событие $(document).ready() запускается один раз, когда DOM полностью загружен из начальной загрузки.

Событие ajax может изменить DOM, но не перезагружает страницу, поэтому $(document).ready()не будет срабатывать снова.

Я заметил, как Google решил эту проблему в Gmail с помощью высокочастотного таймера .

0 голосов
/ 02 июня 2011

Используйте события и слушателей ..

Прочитайте на Ajax-тег событий и слушателей

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