$ (document) .ready в Ruby частичное представление - PullRequest
0 голосов
/ 19 июня 2009

Надеюсь, этот пример лучше проиллюстрирует мою точку зрения, чем просто попытка ее объяснить:

Я использую один из многих плагинов водяных знаков jQuery. Чтобы прикрепить водяной знак к текстовому полю, синтаксис:

$(document).ready(function(){
  $("#item_description").watermark("Description");
});

Это прекрасно работает, если у меня есть страница, которая уже содержит текстовое поле с id = item_description. Однако, если я попытаюсь выполнить какие-либо действия типа ajaxy, загрузив частичное представление, содержащее это текстовое поле, нажатием кнопки, то $(document).ready() уже был вызван, а водяной знак не применяется. Я попытался поместить отдельный $(document).ready() в частичное представление, но похоже, что rails (?) Удаляет любые блоки <script> при рендеринге страницы, а это означает, что он все равно никогда не вызывается.

Есть ли простой способ сделать это? Я что-то упускаю из виду?

Редактировать : я использую плагин jQuery Colorbox , чтобы загрузить частичное представление внутри лайтбокса (через $(.colorbox).colorbox();) - на самом деле я не делаю Ajax запрос сам. Если я до сих пор понимаю ответы, лучшим способом может стать использование функции обратного вызова плагина для выполнения любого необходимого мне javascript внутри партиала.

Рабочий пример : Основываясь на отзывах, я смог получить эту работу, используя colorbox, просто изменив вызов colorbox на:

$(".colorbox").colorbox({}, function(){
  $(".description").watermark("Description"); //Changed to a class
});

Ответы [ 2 ]

2 голосов
/ 19 июня 2009

Почему оно должно быть в $(document).ready? У вас уже есть javascript, загружающий ajax, поэтому вы можете активировать $("#item_description").watermark("Description"); для обратного вызова.

1 голос
/ 19 июня 2009

Из ajax просто позвоните напрямую, не оборачивая его внутрь $(document).ready()

$("#item_description").watermark("Description");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...