Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:如何将.live()与.ajaxForm()链接?_Javascript_Jquery - Fatal编程技术网

Javascript jQuery:如何将.live()与.ajaxForm()链接?

Javascript jQuery:如何将.live()与.ajaxForm()链接?,javascript,jquery,Javascript,Jquery,我有一个通过XHR拉入的表单,所以在最初呈现DOM时它还没有准备好。目前我使用的是: jQuery("[name='myform']").ajaxForm({ /* code here */ }); 它在一个独立的应用程序上运行良好。我将其嵌入的应用程序非常庞大,我需要能够在myform可用于DOM之前将ajaxForm绑定到myform。我是否可以在这里合并.live(),以便jQuery在通过XHR引入时监视它 **编辑** 下面是正在执行的实际代码。没有javascript错误。它只是执

我有一个通过XHR拉入的表单,所以在最初呈现DOM时它还没有准备好。目前我使用的是:

jQuery("[name='myform']").ajaxForm({ /* code here */ });
它在一个独立的应用程序上运行良好。我将其嵌入的应用程序非常庞大,我需要能够在myform可用于DOM之前将ajaxForm绑定到myform。我是否可以在这里合并.live(),以便jQuery在通过XHR引入时监视它

**编辑**

下面是正在执行的实际代码。没有javascript错误。它只是执行一个完整的页面提交,而不是XHR更新

 jQuery("[name='clip_form2']").live('submit', function(e) { 
      $(this).ajaxSubmit({
        target: '#form_quotes_highlights_part',

        beforeSerialize: function(form, options) {
          alert("In beforeSerialize...");
          if (validate_time_text_highlights()) {
            if ( $tabChanged ) {
              diff(form[0]);
              jQuery('form[name=clip_form2] input[type=submit]').attr('disabled', 'disabled').val("<%= t('labels.please_wait') %>");
              return true;
            }
            else {
              return false;
            }
          }
          return false;
        },

        success: function() {
          jQuery('#form_quotes_highlights_part').fadeIn('slow');
        },

        complete: function() {
          jQuery("#wizard").expose().close();
        }
      });
      $tabChanged = false;

      add_change_listener("form[name=clip_form2]");

      Tabs.validateCancel( $( "button[name=Cancel]", "form[name=clip_form2]" ) );

      $("#clip_quote").NobleCount('#quote_count');
      $("#clip_quote2").NobleCount('#quote2_count');
      $("#clip_attribution").NobleCount('#attribution_count');

      if ( <%= is_defined?( @permitted_clip_read_only ) && @permitted_clip_read_only %> ) {
        jQuery( 'form[name=clip_form2] input' ).attr( "disabled", true );
        jQuery( 'form[name=clip_form2] textarea' ).attr( "disabled", true );
      } 
      e.preventDefault();
  });
jQuery(“[name='clip\u form2']”)。live('submit',函数(e){
$(此).ajaxSubmit({
目标:“#表格(引用)部分(突出部分)”,
beforeSerialize:函数(窗体、选项){
警报(“在beforeSerialize中…”);
如果(验证时间文本突出显示()){
如果($tabchange){
差异(形式[0]);
jQuery('form[name=clip\u form2]input[type=submit]').attr('disabled','disabled').val(“”);
返回true;
}
否则{
返回false;
}
}
返回false;
},
成功:函数(){
jQuery(“#form#quotes(form#u highlights(u part”).fadeIn('slow');
},
完成:函数(){
jQuery(“向导”).expose().close();
}
});
$tabChanged=false;
添加更改侦听器(“form[name=clip\u form2]”;
Tabs.validateCancel($(“按钮[name=Cancel],“表单[name=clip\u form2]”);
美元(“#clip_quote”).NobleCount(“#quote_quote”);
$(“#clip”u quote2”).NobleCount(“#quote2”u count”);
$(“#clip#u attributes”).NobleCount(“#attributes_count”);
如果(){
jQuery('form[name=clip\u form2]input').attr(“disabled”,true);
jQuery('form[name=clip\u form2]textarea').attr(“disabled”,true);
} 
e、 预防默认值();
});

像这样的东西应该可以做到:

jQuery("[name='myform']").live('submit', function(e) {
  $(this).ajaxSubmit(/* code here */);
  e.preventDefault();
});

ajaxSubmit()
是魔法发生的地方(as
ajaxForm()
只是绑定了一个提交处理程序),这里我们只是在监听
submit
事件,然后调用
ajaxSubmit()

ajaxSubmit()而不是ajaxForm()的原因是什么?@randombits-我试图在上面详细说明,您可以在这里看到,
ajaxForm()
做得很少:它只是一个在下面调用
ajaxSubmit()
的绑定机制。您能不能改用.delegate()?可能会获得性能优势。@RyanP13-可能,这取决于您是否知道要绑定到更本地的上下文,如果您不能更改
jQuery(“[name='myform']”)。live('submit',function(e){
to
jQuery(“body”)。委托('name='myform'],'submit',function(e){
@Nick-同意这可能更容易坚持。live()如果你不知道上下文的话。我对当前的应用程序做了太多的更改,所以我恢复到了.live(),以防止任何进一步的重构。遗憾的是.delegate()太酷了!