在我的一个搜索栏中,在键盘上,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,并根据传递的三个参数的值,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次点击(应该触发警报的点击)时,它会多次发出警告。
可以找到一个工作示例here
答案 0 :(得分:0)
语法是
$('.sky').live("click",function(
........................
));
这可能是问题
答案 1 :(得分:0)
尝试在alert语句之后使用break语句,以便它将移出循环。