参见英文答案 >
jQuery doesn’t work after content is loaded via AJAX 7个
我有一个页面,当html5数字字段被更改时触发calculate()函数我已经绑定了几乎我能想到的每个事件,它适用于最初加载的DOM元素.
但是,如果我在加载dom后添加元素,则不会触发更改功能.
我添加了一个运行calculate()函数的按钮,当单击它时,它将运行新创建的元素以及原始元素.
所以我知道代码可以工作,但事件不是为新创建的dom元素触发.
Jquery触发器
$('.score').change(function() {
calculate();
});
$('.score').bind('keyup mouseup',function() {
calculate();
});
$('.score').mousewheel(function() {
calculate();
});
$('.score').click(function() {
calculate();
});
$('.score').keypress(function() {
calculate();
});
计算功能
function calculate() {
$("tbody tr").each(function() {
row_total = 0;
$(".score",this).each(function() {
row_total += Number($(this).val());
});
$(".total",this).val(row_total);
});
var arr = [];
var row = 0;
$("tbody tr").each(function() {
$(".total",this).each(function() {
arr[row] = $(this).val();
row += 1;
});
});
var sorted = arr.slice().sort(function(a,b) {
return b - a
})
var ranks = arr.slice().map(function(v) {
return sorted.indexOf(v) + 1
});
row = 0;
$("tbody tr").each(function() {
$(".place",this).each(function() {
$(this).val(ranks[row]);
row += 1;
});
});
$("tbody tr").each(function() {
$(".place",this).each(function() {
var p = $(this).val();
switch (p) {
case '1':
$(this).css('background-color','gold');
break;
case '2':
$(this).css('background-color','silver');
break;
case '3':
$(this).css('background-color','#8c7853');
break;
case '4':
$(this).css('background-color','white');
break;
default:
$(this).css('background-color','white');
}
});
});
}
genRow功能
function genRow(i)
{
var x = "";
for (var j = 0; j < i; j++) {
x += '
';x += '
';x += '';
x += '
';x += '
';x += '';
x += '
';x += '
';x += '';
x += '
';x += '
';x += '';
x += '
';x += '
';x += '';
x += '
';x += '
';x += '';
x += '
';x += '
';x += '';
x += '
';x += '
';x += '';
x += '
';x += '
';}
return x;
}
Name | Judge 1 | Judge 2 | Judge 3 | Judge 4 | Judge 5 | Place | |