Использование JQuerys Dialog несколько раз в цикле рельсов

У меня есть следующий код рельсы в цикле, который имеет ссылку на диалог JQuery.

('report_image' в этой ссылке является вспомогательным методом, который просто вызывает изображение.)

<%= link_to report_image, "#", :class => "flight_report_opener" %>
  <div id="flight_report_dialog" title=" FLIGHTS REPORT">
    <p>Dialog content</p>
  </div>
<% end %>

Проблема, конечно, заключается в том, что это генерирует несколько экземпляров id="flight_report_dialog" на одной и той же странице... что прерывает вызовы.dialog. Также не могу использовать классы. Я попытался изменить идентификатор, который будет генерироваться динамически, добавив идентификатор, сгенерированный циклом (@ratings.each do |rating|), в конец диалогового окна div css id. Затем передайте это через именованный вызов функции в link_to_function.

<div id="flight_report_dialog_<%= rating %>" title=" FLIGHTS REPORT"> %> </div>

Это тоже не сработало для меня.

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

Как вызвать функцию диалога jquery несколько раз на одной странице из динамически сгенерированных ссылок.

Функция, которую я сейчас использую, это... которая, конечно, не работает. На самом деле, для ясности, функция работает нормально... на первом экземпляре идентификатора, который называется:

$("#flight_report_opener").click(
     function() { $( "#flight_report_dialog" ).dialog( "open" ); 
     return false; 
});

1 ответ

Решение

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

В обзоре:

<%= link_to report_image, "#", :class => "ground_report_opener", :data => {rating: rating.id} %>
<div class="ground_report_dialog" id="ground_report_dialog_<%= rating.id %>" title=" GROUND REPORT">

В JS:

$(".flight_report_opener").click(function() { 
$( "#flight_report_dialog_"+$('.flight_report_opener').data('rating') ).dialog( "open" ); 
return false; 
});
Другие вопросы по тегам