2011-01-25 53 views
1

要繼續從上一個問題這裏是一個函數用於確定什麼元素選擇的單選按鈕和複選框加載在右手的標誌和什麼元素通過'blank2.html' 。問題在於它在錯誤的時間點加載錯誤的元素。這是代碼。JQuery加載函數產生意想不到的結果

function product_analysis_global() { 
$(':checked').each(function() { 
    var alt = $(this).attr('alt'); 
    var title = $(this).attr('title'); 
    if ($('#product_quantity_PRI_' + alt).attr('title') != title) { 
     $('#product_' + alt).load(title); 
     $('#product_quantity_PRI_' + alt).attr('title', title); 
     $('#product_quantity_PRI_' + alt).val($(this).val()); 
    } else if ($('#product_quantity_PRI_' + alt).attr('title') != 'http://www.divethegap.com/update/blank2.html') { 
     $('#product_' + alt).load('http://www.divethegap.com/update/blank2.html'); 
     $('#product_quantity_PRI_' + alt).attr('title', 'http://www.divethegap.com/update/blank2.html'); 
    } else return false ; 
}); 

}

看看它的實現在這裏,你會看到正是我的意思。 http://www.divethegap.com/update/diving-trips/adventure-training並點擊BEGINNERS加載表單。我相信問題在於$(this).attr('alt')和$(this).attr('title')只收集箱子的一個屬性,而不是全部檢查箱子。

的附加特徵,我想此代碼具有處於未選中的方框來治療禁用複選框或單選按鈕,並通過「blank2.html」加載出來

回答

1

$.load打完的異步請求,因此隨後的陳述將在之前評估該請求結束(至少在絕大多數情況下)。

你需要做你想要的它success回調中,以確保它是保證發生一次$.load已完成:

// make sure you make the current context available within the callback 
var that = this; 
$('#product_' + alt).load(title, function() { 
     $('#product_quantity_PRI_' + alt).attr('title', title); 
     $('#product_quantity_PRI_' + alt).val($(that).val()); 
}); 
+0

謝謝您的回答。我將這段代碼放在一個Ready函數中,假設它會像回調函數那樣工作。它沒有。對於JQuery,我是一個新手,儘管我非常感謝你的幫助,並且需要關於我應該做什麼的更多說明。另外我想問的是,這個預訂系統在加載內容時速度很慢。是否有更好的選擇? – 2011-01-25 13:09:14

相關問題