2012-07-04 102 views
0

我想運行兩個腳本:一個用於加載頁面內容使用Ajax和另一個使用Ajax提交聯繫表格。AJAX腳本不工作後,頁面內容更改與另一個Ajax腳本

加載頁面內容:

<script> 
$('#top_links a').click(function (e) { 
    e.preventDefault(); 
    var link = $(this).attr('href'); 
    $('#content').empty(); 


    $.get(link, { }, 
     function(data) { 
      $('#content').replaceWith($(data).find("#content")); 

     } 
    ) 
}); 
</script> 

提交表單:

<script type="text/javascript"> 

$('#submit').click(function(event){ 

    event.preventDefault(); 
    var name = $('#name').val(); 
    var email = $('#email').val(); 
    var message = $('#message').val(); 
    $.post("<?php echo bloginfo('template_directory') . '/inc/mailit.php';?>", 
     { 
     name: name, 
     email: email, 
     message: message 
     }, 
     function(data) { 
      var n = data.indexOf('<span class="success_message">'); 

      if (n !== 0) { 
      $('#message_box_1').empty().append(data); 
      } else { 
      $('#contact_form').empty().append(data); 

      } 
     } 
    ); 
}); 


</script> 

兩個腳本都在頁腳和不包含在動態加載的內容。當我直接訪問聯繫頁面而不使用ajax來加載它的內容時,表單代碼完美地工作。但是當我使用ajax加載表單時,提交腳本停止工作。

這實際上是一個後續問題,我對其中一個我posted earlier。經過一番思考,我不能100%確定我之前收到的答案是準確的。答案依賴於表單提交代碼是加載內容的一部分,但這不是真實的,因爲我將所有代碼放入了不受內容更改影響的頁腳中。由於我無法取消選中答案,因此我需要重新發布。

+2

你顯然改變東西是使用第二個腳本,你有沒有嘗試:'$(文件)。在( '點擊', '#submit',函數(事件){...' – adeneo

回答

1

如果提交按鈕處於動態加載的內容中,則必須使用$ .live()函數。

$("#submit").live("click", function(e){}) 
+0

Live是折舊使用'委託' – coolguy

+0

'$('body')。委託('#提交','點擊',函數(){//東西});'' – coolguy

1

您需要在之後運行提交表單腳本表單被加載。

試着將你的提交表單腳本包裝在一個函數中,比如applySubmitFormEvents(){...}或類似的東西。

然後在你的回調函數中,你需要調用applySubmitFormEvents()。