2010-02-17 55 views
0

客戶機向服務器發出請求。 我需要參與該請求,並使表單按鈕與Ajax一起工作。通過jQuery中的Ajax請求製作Ajax表單

這段代碼完全適用於鏈接:

var pagination_render = function() { 
    var pagination = $('.pagination a'); 
    pagination.each(function() { 
     $(this).click(function(event) { 
      load_server(this.href, '.houseindex'); 
      return false; 
     }); 
    }); 
}; 
pagination_render(); 

我試過無數事情讓阿賈克斯按鈕的工作,這也是嘗試中的一種:

var contact_user = function() { 
    $('.expanded').find('#submit').each(function() { 
     $(this).unbind('click'); 
    }); 

    $('.expanded').each(function() { 
     $(this).find('#submit').click(function(event) { 
      form_submit($(this).parent(), '.contactuser .msg'); 
      return false; 
     }); 
    }); 
} 

每當有成功的Ajax調用,它會遍歷所有擴展項目,然後綁定一個點擊事件。

現在,有時候這個代碼有效,有時它不會。當它不起作用時,它會禁用我設置的其他事件(切換鏈接)。 似乎我需要等待幾毫秒才能將組件加載到DOM中。是嗎?

回答

2

所以我得到的,當你調用contact_user你:

  1. 先解除從提交按鈕以往任何綁定click事件。我在那裏看到一個可能的問題,那就是你正在尋找一個ID爲#submit。您應該只在一個頁面中擁有一個ID。因此,您只需要使用$('#submit').each(...)或者如果頁面中有多個提交按鈕,如果在.expanded項目中有幾個提交按鈕,或者只使用$('.expanded :submit')
  2. 單擊提交按鈕時添加自定義事件。同樣的事情,你可以通過$('.expanded :submit')簡化這個,或者如果你真的只有一個按鈕的ID爲submit(很混亂)。去$('#submit')

結論:

var contact_user = function(){ 
    $('.expanded :submit').unbind('click'); 
    $('.expanded :submit').click(function(){ 
     form_submit($(this).parent(), '.contactuser .msg'); 
     return false; 
    }); 
}; 

:submit選擇將選擇所有<input type="submit" />

+0

完美答案,謝謝。 顯然,問題出現在函數的重複調用中。 我喜歡使用:submit的想法,忘記了jQuery的可能性。 – Yossi 2010-02-17 21:02:59