私の検索バーの 1 つで、キーアップ時に div に別のファイルの内容が読み込まれます。
<input type='text' value='search' id='search' />
このタスクの私の JS コードは次のとおりです。
$("#search").keyup(function(){
var search = $(this).val();
var url = "model/quickpicks_backend.php";
var league = $('#league_form').val();
var position = $('#compose').val();
var data = "search="+ search +"&league="+ league +"&position="+ position;
$('#load').load(url, data);
});
すべての URL パラメーターは効果的に model/quickpicks_backend.php に渡され、渡される 3 つのパラメーターの値に基づいて、PHP は 0 から 5 までの結果をエコーアウトします。エコーアウトされるものはすべて、「結果」のクラスの の中にラップされます。JSコードもあります。それは次のとおりです。
$('.sky').click(function(){
var num = $('#num').text();
var num_trim = num.trim();
var new_num = Number(num) + Number(1);
$('#num').text(new_num);
var id = $(this).attr('id');
var player_id = Number(id) - Number(5);
var league = $(this).attr('title');
$.ajax({
type: 'GET',
url: 'model/quickpicks_list.php',
data: 'num='+ num +'&player_id='+ player_id +'&league='+ league,
dataType: 'JSON',
success: function(data)
{
$.parseJSON(data);
$('#'+ id).fadeOut('fast');
$('#search').val('');
$('#num').text(new_num);
$('#'+ num_trim).html(data.value);
if(num == 5)
{
alert("done");
}
}
});
});
問題は、.sky がクリックされるたびに、クリックされた最新の要素からのデータが収集されないことです。むしろ、h1.sky が最初にクリックされたときからすべて同じ情報です。多分使ってると思った
$('.sky').each(function(index) {
$(this).click(function(){
});
});
代わりに動作します。しかし、そうではありませんでした。使用する
$('.sky').live();
うまくいきましたが、5回目のクリック(アラートをトリガーするはずのクリック)で、複数回アラートが表示されます。
実際の例はここにあります