2013-11-09 46 views
0

.click()中的.each()函數未運行。我不知道如何構造它們以使它在語法上正確,以便jQuery能夠識別並運行它們。jQuery在.click()函數中放置.each()函數

我試圖在關閉});之前加固它們,但是我要麼做得不對,要麼不是這樣做。我試着Google搜索,但除了我的主題標題之外,我對搜索的內容感到不知所措。我確實嘗試jQuery的函數內功能,但結果是一個失敗的原因。

編輯:我設法得到第一個正確着火(//POST specials)但是,第二個仍然無法正常工作。我甚至試圖將extras POST放入specials.ajax()之內,但它不起作用。

$('.class').find('#button').click(function() { 

     //all kinds of variables here 

     var dataString = {//variables:variables} 
     console.log(dataString); 

     $.ajax({ 
      type: "POST", 
      url: "classes/reserve.php", 
      data: dataString, 
      cache: false, 
      success: function(html) 
      { 
       //POST specials 
       $('#specialscheck input:checked').each(function() { 
        var reservation = $('#reservation').val(); 
        var special = parseInt($(this).attr('id')); 
        dataString = {reservation:reservation, special:special}; 
        console.log(dataString); 
        $.ajax({ 
         type: "POST", 
         url: "classes/insert_specials.php", 
         data: dataString, 
         cache: false, 
         success: function(html) 
         { 
          //$('.unitinfolist').html(html); 
         } 
        }); 
       }); 

       //POST extras 
       $('#extrascheck input:checked').each(function() { 
        var reservation = $('#reservation').val(); 
        var extra = parseInt($(this).attr('id')); 
        dataString = {reservation:reservation, extra:extra}; 
        console.log(dataString); 
        $.ajax({ 
         type: "POST", 
         url: "classes/insert_extras.php", 
         data: dataString, 
         cache: false, 
         success: function(html) 
         { 
          //$('.unitinfolist').html(html); 
         } 
        }); 
       }); 
      } 
     }); 
    }); 
+0

在一般意義上,你可以在任何函數內部放置一個'.each()',包括一個點擊處理函數。你確定$('。checkboxes1 input:checked')'是否使用了正確的選擇器?如果沒有元素匹配那個選擇器,'.each()'不會做任何事情。如果這些元素是由您的初始Ajax調用創建的,則在發生'.each()'語句時,它們不會存在。您可以測試有多少元素與'console.log($('。checkboxes2 input:checked')。length)'匹配。也許你可以顯示你的一些HTML? (或者在http://jsfiddle.net上爲我們提供一個演示。) – nnnnnn

回答

1

你應該移動。每個成jQuery的崗位的success功能或將其async: false,遵循這種模式。

$.ajax({ 
    type: 'POST', 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType, 
    async:false 
}); 
+0

我嘗試了你所說的,並且一半工作。我編輯了我的問題以反映我的變化。 –

+0

記得設置async:false – christiandev