0

我正在开发一个 Rails 应用程序,我在其中使用 jQuery 和 Facebox Lightbox 弹出表单。我想在表单上使用一些 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' %>

它在这里失败了。

你会认为它在哪个文件中没有任何区别。它应该以相同的方式加载。

知道为什么会这样吗?

4

1 回答 1

2

我认为在您的 document.ready 代码中,您正在做类似的事情

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

所以这将附加到加载时存在的所有具有超酷类的类。你想要做的是使用现场

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

这只是一个猜测——我认为这就是正在发生的事情——如果不是这样,需要查看更多的 javascript。

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

于 2010-11-12T21:08:15.427 回答