Javascript внутри Facebox лайтбокс

Я работаю над приложением rails, где я использую jQuery и лайтбокс Facebox для всплывающих форм. Я хочу использовать некоторую проверку jQuery в форме. Когда я пытаюсь реализовать это, я сталкиваюсь с некоторыми странными результатами.

Если я помещаю javascript непосредственно в представление, которое я загружаю во всплывающем окне, javsacript работает просто отлично.

Пример: app/views/ item / view.html.erb

...

<script type="text/javascript">
    $(document).ready(function() {
        ...
    });
</script>

Однако, если я абстрагирую его на один шаг и вставлю javascript в макет, который я использую для всплывающего окна, произойдет сбой.

Пример: app/views/ layouts / popup.html.erb

<script type="text/javascript">
    $(document).ready(function() {
        ...
    });
</script>

<div id="popup">
    <%= yield %>
</div>

Он также завершается ошибкой, если я извлекаю сценарий из кода, который непосредственно кодируется в представление, в отдельный файл javascript, например, если я помещаю тот же сценарий в ../public/javascripts/popup.js

тогда, на мой взгляд, я делаю:

<%= javascript_include_tag 'popup' %>

Это не здесь.

Можно подумать, что не имеет значения, в каком файле он находится. Он должен быть загружен таким же образом.

Есть идеи, почему это происходит?

1 ответ

Решение

Я думаю, что в вашем коде document.ready вы делаете что-то вроде

$(".supercool")..bind('click', function() {
  somethingAwesome();
});

Так что это будет прикрепляться ко всем классам с классом supercool, которые существуют при загрузке. Что вы хотите сделать, это использовать в прямом эфире

$('.supercool').live('click', function() {
  // Live handler called.
});

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

http://api.jquery.com/live/

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