Функция JQuery, предотвращающая удаленный вызов Rails

У меня есть ссылка на моей странице, которая делает AJAX удаленный вызов passcheck_path и p теги вокруг него предоставляют функцию активации модального окна JQuery, которое охватывает всю страницу.

<p class="right blackout">
  <%= link_to "blank screen", passcheck_path, :remote => true %>
</p>

JS выглядит следующим образом:

$().ready( function() {
    $('.blackoutwindow').jqm({
        modal: true,
        trigger: '.blackout',
        overlay: 100
    });
});

Когда я нажимаю на ссылку, появляется модал, но удаленного вызова не происходит вообще. Однако, когда я удаляю p теги, удаленный вызов работает отлично (но, очевидно, модальный не срабатывает). Я действительно понятия не имею, почему это ведет себя так, но я предполагаю, что javascript переопределяет что-то?

Ваша помощь будет принята с благодарностью.

1 ответ

Решение

Плагин jqModal, который вы используете, освобождает все обработчики кликов, определенные в вашей ссылке, в том числе и с помощью rails.

Так что либо вы переключаете плагины на другой, либо модальные диалоговые окна jqueryui, потому что jqModal кажется довольно устаревшим, или вы можете реализовать рабочую среду, вызывая удаленно с помощью обратного вызова onShow jqModal:

$('.blackoutwindow').jqm({
    modal: true,
    onShow: function() {
        $.get($(this).attr('href')); // DIY Implementation of the remote call
    },
    trigger: '.blackout',
    overlay: 100
});

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

Другие вопросы по тегам