JQuery Load函数产生意外结果

时间:2011-01-25 12:51:05

标签: php jquery load

要继续上一个问题,这里有一个函数,用于确定单选标记上加载的单选按钮和复选框选择的元素以及通过'blank2.html'加载的元素。问题是它是在错误的时间点加载错误的元素。这是代码。

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 个答案:

答案 0 :(得分: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()); 
});