2010-06-18 1 views
2

Я, имеющим множество ссылок на моей странице, и я приложил facebox функциональность JQuery, так что всякий раз, когда ссылка нажата, она получит хорошую всплывающееJQuery-Facebox - Всплывающий не работает после того, как перекрашивать от AJAX

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

Ниже приведен сценарий, который я использую для 'facebox'ing.

<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) 

ответ

3

Включите яваскрипт код, который вы упомянули внутри вас частично. Я предполагаю, что он будет выполнен снова при загрузке. Я не уверен, что событие 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?')" 

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

+0

Эй, я почти там. JQuery ('a [rel * = facebox]') возвращает мне весь набор тегов LINK. Но мне нужно отфильтровать его на основе идентификатора. как это сделать ? – bragboy

+0

@Bragaadeesh - вы можете прочитать эту ссылку для селекторов id ... http://api.jquery.com/id-selector/ или других других селекторов здесь http://api.jquery.com/category/selectors/ – Reigel

+0

это ответ мне тоже ... Я добавил jQuery ('a [rel * = facebox]'). facebox(); в ответе AJAX и проблема расходится ... СПАСИБО! –

1

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

+0

Может ли u plz дать мне синтаксис для этого? (я новичок в jquery/facebox) – bragboy

+0

это зависит от того, как ваш аякс идет ... можете ли вы показать мне какие-то коды? ... часть рендеринга ... – Reigel

+0

Я могу .. но ее в рубинах на рейках? Это нормально? – bragboy