目前我正在使用 django 开发一个项目,我的一个 View 通过 ajax 调用和 ReplaceWith 函数填充表格。奇怪的是,我的 html 源没有改变,但我可以从 chrome 的检查参数中看到所有表格内容。当我想从生成的内容中获取 id 或类时,jQuery 找不到任何东西。
那么我是否以错误的方式使用了replaceWith?以及如何从新生成的内容中选择元素?
这是代码:
Jquery 部分
$('#channel_selector').change(function(event)
{
event.preventDefault();
var selected_channel = $('#channel_selector').val();
deneme(selected_channel);
});
function deneme(d){
$.ajax({
type:"POST",
url:"/wsp/proginfo/",
data:d,
dataType:'text',
success: function(msg){
var entity_table = $(msg).find("#program_table tbody").html();
entity_table = "<tbody>" + entity_table + "</tbody>";
$("#program_table tbody").replaceWith(entity_table);
}
});
生成内容
{% for entity in entities %}
<tr>
<td>
<input type="checkbox" name="entity_selection" />
</td>
<td>{{entity.pk}}</td>
<td><input type="text" value="{{entity.get_name}}" /></td>
<td><input type="text" value="{{entity.get_productionYear}}" /></td>
<td><input type="text" value="{{entity.get_director}}" /></td>
<td><input type="text" value="{{entity.get_cast}}" /></td>
<td><input type="text" vaue="blah"/></td>
<td><input type="text" value="{{entity.get_ProgramDetail}}"></td>
<td>
<input type="submit" class="testB" value="Yeni Bölüm"/>
</td>
我想在单击 testB 按钮时发出警报
$('.testB').click(function(){
alert("ok");
});
最佳答案
由于您通过ajax替换内容$('.testB').click()
将不起作用,因为我假设您正在文档准备中注册该事件处理程序或类似的内容。创建事件处理程序依赖于注册时 dom 上存在的元素。如果要将事件处理程序附加到尚未附加到 dom 的元素,请使用 .live()或.delegate()
$('.testB').click(function(){
alert("ok");
});
变成
$('.testB').live('click', function(){
alert("ok");
});
这是 jsfiddle 上的示例描述了所有三种情况。
关于jquery - 使用 jQuery 的 ReplaceWith 函数后如何获取 id 或 class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5028498/