【问题标题】:JQuery Load functions producing unexpected results产生意外结果的 JQuery 加载函数
【发布时间】:2011-01-25 21:00:35
【问题描述】:

从上一个问题开始,这里有一个函数,用于确定由单选按钮和复选框选择的哪些元素加载到右侧标志上,以及哪些元素通过“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”将其加载出来

【问题讨论】:

    标签: php jquery load


    【解决方案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()); 
    }); 
    

    【讨论】:

    • 感谢您的回答。我将这段代码放在 Ready 函数中,假设它的行为类似于回调函数。它没有。我是 JQuery 的新手,非常感谢您的帮助,并且需要更多关于我应该做什么的说明。我还想问的另一件事是,这个预订系统在加载内容时非常慢。有没有更好的选择。s
    • @Robin Knight - 遗憾的是,如果预订系统需要花费大量时间来建立响应,那么在客户端您将无能为力 - 除了向用户表明,通过加载消息或正在发生某事的微调器的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多