2011-01-25 28 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火災、それ以降のステートメントは、の前に評価されます(少なくとも大部分のケースでは)の要求が完了します。

あなたはそれが が一度$.loadが完了したために起こるを保証していることを保証するために、その successコールバックの中にあなたが欲しいものを行う必要があります

:あなたの答えのための

// 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の新機能ですが、あなたの助けに感謝し、正確に何をすべきかについていくつかの指示が必要です。もう1つは、この予約システムがコンテンツを読み込む際に非常に遅いということです。 –

+0

@Robin Knight - 悲しいことに、予約システムに応答時間を延ばすために多くの時間がかかると、クライアント側で何もできることはありません。読み込み中のメッセージや何かが起こっているスピナーのことです。 – karim79

関連する問題