jQuery-Facebox - всплывающее окно не работает после перерисовки из AJAX - PullRequest
2 голосов
/ 18 июня 2010

У меня есть набор ссылок на моей странице, и я прикрепил функцию jQuery для facebox, чтобы при каждом нажатии ссылки получалось приятное всплывающее окно

<a href="coach_selector_popup?day=<%= day %>&hour=<%= hour %>" rel="facebox">

Ниже приведен скрипт, который яиспользуйте для «facebox».

<script type="text/javascript">
  jQuery(document).ready(function($) {
    jQuery('a[rel*=facebox]').facebox()
  })
</script>

Выше работает нормально.Но когда я выполняю его снова в ответ на какой-то вызов AJAX, функциональность теряется, то есть, когда я нажимаю на ссылку, я перенаправляюсь на страницу вместо всплывающего окна «facebox».

Я знаю, что мне нужносделать что-нибудь, когда я перекраслюсь, кто-нибудь может указать мне правильное направление?

Редактировать: Я выполняю партиал рендеринга на моем контроллере следующим образом.

render(:partial => "grid_item" , :locals => {:day=>d, :hour=>h)

Ответы [ 2 ]

3 голосов
/ 18 июня 2010

Включите код Javascript, который вы упомянули внутри вас частично. Я предполагаю, что он будет выполнен снова при загрузке. Я не уверен, что событие document.ready вызвано частичным обновлением, но я думаю, что это так.

Если вы используете link_to_remote или что-то подобное, вы также можете использовать опцию :complete или :succes для добавления обратного вызова javascript, например как это:

link_to_remote get_icon('remove'), 
   :url => {:action => "your_action", :id => @record},
   :success => "jQuery('a[rel*=facebox]').facebox();" , 
   :failure => "alert('It failed?')"

Надеюсь, это поможет!

1 голос
/ 18 июня 2010

вы должны снова вызвать .facebox() после добавления новых элементов ... используйте функцию обратного вызова на вашем ajax ...

...