动态加载的复选框未触发
dynamically loaded checkbox not firing
Table 使用下面的 ajax 加载..
$.ajax({
type:"POST",
url:"loadquestionsajax.php",
data:"qcategory="+qcategory,
dataType:"json",
success: function(s){
$.each(s,function(i,obj)
{
if(obj!=false){
while(i<1){
$("#t01").append("<tr>"+"<th><input type='checkbox' class='cbox' value=''/></th>"+"<th>Question ID</th>"+"<th>Question</th>"+"<th>Choice 1</th>"+"<th>Choice 2</th>"+"<th>Choice 3</th>"+"<th>Choice 4</th>"+"<th>Answer</th>"+"</tr>");
i++;
}
$("#t01").append("<tr>"+"<td><input type='checkbox' name='qtns[]' class='cbox' value='"+obj[0]+"'/></td>"+"<td>"+obj[0]+"</td>"+"<td>"+obj[1]+"</td>"+"<td>"+obj[2]+"</td>"+"<td>"+obj[3]+"</td>"+"<td>"+obj[4]+"</td>"+"<td>"+obj[5]+"</td>"+"<td>"+obj[6]+"</td>"+"</tr>");
}else{
exit();
}
});
}
});
我的事件处理程序是下面的代码。 (它甚至不调用复选框检查。)请帮助我。提前致谢。
$(文档).ready(函数(){
$(document).on('click', '.cbox', function(){
alert('test');
});
});
我也使用了下面的代码。
$(文档).ready(函数(){
$('.cbox').change(function(){ // .click also seen but not workig.
alert("hello")
;
});
});
您的 _newly_added_ 复选框将不会实现“.cbox”行为。 '因为你在 $(document).ready(..)
上通过 jquery 定义了这种行为,并且在添加了这个新复选框之后,它对你的 $(document).ready(..)
事件一无所知,即使它有 .cbox
class。为每个新元素手动添加 $('#newElementId').change(function(){..})
处理程序。
您遇到的问题是,当您在 javascript 中定义 click/change 函数时,您是在文档就绪函数中执行它们。这意味着它只会将这些事件侦听器绑定到文档加载中存在的元素上。如果您希望在 ajax 之后将更改功能元素附加到 DOM,您将必须动态绑定这些事件侦听器。
最简单的方法是在将所有元素添加到 DOM 后重新运行现有代码。
success: function(s){
//...
// elements created
//...
//now reload the event listener
$(document).on('click', '.cbox', function(){
alert('test');
});
}
Table 使用下面的 ajax 加载..
$.ajax({
type:"POST",
url:"loadquestionsajax.php",
data:"qcategory="+qcategory,
dataType:"json",
success: function(s){
$.each(s,function(i,obj)
{
if(obj!=false){
while(i<1){
$("#t01").append("<tr>"+"<th><input type='checkbox' class='cbox' value=''/></th>"+"<th>Question ID</th>"+"<th>Question</th>"+"<th>Choice 1</th>"+"<th>Choice 2</th>"+"<th>Choice 3</th>"+"<th>Choice 4</th>"+"<th>Answer</th>"+"</tr>");
i++;
}
$("#t01").append("<tr>"+"<td><input type='checkbox' name='qtns[]' class='cbox' value='"+obj[0]+"'/></td>"+"<td>"+obj[0]+"</td>"+"<td>"+obj[1]+"</td>"+"<td>"+obj[2]+"</td>"+"<td>"+obj[3]+"</td>"+"<td>"+obj[4]+"</td>"+"<td>"+obj[5]+"</td>"+"<td>"+obj[6]+"</td>"+"</tr>");
}else{
exit();
}
});
}
});
我的事件处理程序是下面的代码。 (它甚至不调用复选框检查。)请帮助我。提前致谢。
$(文档).ready(函数(){
$(document).on('click', '.cbox', function(){
alert('test');
});
});
我也使用了下面的代码。
$(文档).ready(函数(){
$('.cbox').change(function(){ // .click also seen but not workig.
alert("hello")
;
});
});
您的 _newly_added_ 复选框将不会实现“.cbox”行为。 '因为你在 $(document).ready(..)
上通过 jquery 定义了这种行为,并且在添加了这个新复选框之后,它对你的 $(document).ready(..)
事件一无所知,即使它有 .cbox
class。为每个新元素手动添加 $('#newElementId').change(function(){..})
处理程序。
您遇到的问题是,当您在 javascript 中定义 click/change 函数时,您是在文档就绪函数中执行它们。这意味着它只会将这些事件侦听器绑定到文档加载中存在的元素上。如果您希望在 ajax 之后将更改功能元素附加到 DOM,您将必须动态绑定这些事件侦听器。
最简单的方法是在将所有元素添加到 DOM 后重新运行现有代码。
success: function(s){
//...
// elements created
//...
//now reload the event listener
$(document).on('click', '.cbox', function(){
alert('test');
});
}