2010-08-19 3 views
0

Я использую плагин jQuery colorbox как мое решение popup/modal диалогового окна на моем сайте. Когда я даю js-ответ клиенту, я хочу открыть всплывающее окно. Я написал следующий код в моем response1.js.erbКак отобразить диалоговое окно на странице как Rails JS-ответ?

$.colorbox(); 

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

$.colorbox() is not a function 

как еще я могу выполнить задачу? пожалуйста помоги. Все мои связанные javascripts (jquery, colorbox) загружаются должным образом при загрузке страницы (я проверил файл html-файла страницы)

ответ

0

Это работает для меня, вы используете format.js, который вызывает ваш page.js.erb? У меня проблема, когда я использую $.colorbox({html:'<p>testing 123..</p>'}) прямо в моем документе, готовом к моему приложению, заявив, что $box не определен. Не знаю, почему это так. Но в отношении того, что я вижу из вашего ограниченного примера, он должен работать.

0

Перед отправкой убедитесь, что файл JS Colorbox загружен до $.colorbox(). Если вы ссылаетесь на эту функцию до ее добавления в объект jQuery, то она не будет доступна. Вы также должны убедиться, что $ ссылается на jQuery в том контексте, в котором вы его используете. Если вместо этого ссылаться на Prototype, вы можете получить эту ошибку. Кроме того, если вы дважды загружаете jQuery, то объект jQuery теряет свои расширения, которые были загружены до того, как последний jQuery будет включен в страницу. Некоторые плагины jQuery любят включать jQuery в свои минитированные или упакованные дистрибутивы - это плохая форма, но часто это может вызвать эту проблему. Поэтому убедитесь, что ваши библиотеки не включают jQuery после того, как вы уже это сделали.

Лучший способ гарантировать, что $ всегда со ссылкой на JQuery, чтобы заключить его в затворе, как это:

(function($){ 
    // notice the $ argument of the anonymous function 
    $('#dollarsign').is('.jQuery'); 
    // this last line executes the anonymous function and passes in jQuery as $ 
})(jQuery); 
Смежные вопросы