【问题标题】:jQuery: How to fix this syntax for a live bindingjQuery:如何为实时绑定修复此语法
【发布时间】:2010-10-30 00:11:37
【问题描述】:

我似乎无法做到这一点。

我有通过 XHR 输入的表单。一旦它通过 XHR 进入,我需要能够附加一个提交处理程序,因此这里是 .live() 。下面的代码确实有效,问题是发生了 XHR HTTP POST(这很好),然后发生了整页 HTTP POST 加载,这不好。返回错误;似乎什么都不做。我的后端是 Rails,但这在这种情况下意义不大。我在这段代码中做错了什么,这使得 HTTP POST 为 XHR 发生一次,为整个页面加载发生一次?更好的解决方法?

$('form[name=clip_form2]').live('submit', function() {
  $.post($(this).attr("action"), $(this).serialize(), null, "script");
  return false;
});

我的 Rails 表单甚至有一个 onsubmit="return false;"处理程序:

  <% form_for(@clip, :url=>group_channel_clip_path(@clip.group_channel,@clip), :method=>:put, :html => {:multipart => true, :name=>'clip_form2', :onsubmit => "return false;"}) do |f| -%>

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby


    【解决方案1】:
    $(document).ready(function(){
        $('form[name=clip_form2]').submit(function(e){
            e.preventDefault();
            $.post($(this.attr('action')), $(this).serialize(), null, 'script');
        });
    });
    

    这也是一个非常易于使用的 jquery 扩展,它具有附加功能http://jquery.malsup.com/form/

    【讨论】:

    • 如果在渲染 DOM 时表单 clip_form2 不可用,这将不起作用。某种形式的 .live() 或 .delegate() 仍然需要存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2017-08-30
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多