2012-10-11 52 views
0

我有一個頁面上的多個形式,我很喜歡這個如何使用jQuery的使用上下文變量ajaxSetup

<td> <form> form1 </form> </td> 
<td> <form> form2 </form> </td> 

var options = { 
      target:  '.ajaxMessage', 
      dataType: 'json', // pre-submit callback 
      success:  function(data, statusText, xhr, form){ myResponse(data,form)}, 
      context: { element: this}, 

      cache: false, 
      delegation: true, 
      type: 'POST' }; 

      $(".rform").ajaxForm(options); 

在我AjaxSetup通過給ajaxForm插件提交他們,我有這個

beforeSend:function(xhr, settings){ 

     $this = settings.context.element;  
     alert($this); 

但它不工作,警告說window對象

+0

''是你的實際標籤,還是僅僅是一個例子? – Daedalus

+0

只是其中的例子 – user825904

+0

請發表您的其他代碼。 – Daedalus

回答

3

當您創建選項時,「this」指的是窗口。

不知道你想要什麼this指在beforeSend,但它很可能是最簡單的,只是將其設置爲一個jQuery參考......像這樣:

<form id="form1">...</form> 
<form id="form2">...</form> 

,併爲您的上下文對象:

context: { element: $('#form2') }, 

評論 我看到後更新。這並不優雅,但您可以使用插件的beforeSubmit回調來設置一個全局變量(傳入該回調),然後在您的beforeSend回調中訪問該變量。

將代碼放在beforeSubmit回調中可能會更好。

(這一切都假定你正在使用this ajaxForm plugin。)

更新與實例:

var options = { 
    ... 
    beforeSubmit: function(arr, $form, options) { 
    // save the form somewhere we can get it later: 
    $.MyActiveForm = $form; 
    } 

現在您的onSend功能,您可以訪問$.MyActiveForm

但是,我仍然認爲你最好在onSend函數beforeSubmit中做任何你將要做的事情,除非你需要介入該部分關鍵點。

+0

我不能硬編碼formid,因爲我想把這個表單提交給aal表單。 – user825904

+0

我正在使用該插件。但我不明白你的意思。你能給我代碼示例你說什麼 – user825904

+0

謝謝你的朋友,完美的工作 – user825904