当然我正在使用django开发一个prpject,我的一个视图通过ajax调用和replaceWith函数填充表。奇怪的是,我的html源代码没有改变,但我可以看到chrome的inspect参数中的所有表格内容。当我想从生成的内容中获取id或类时,jQuery找不到任何东西。
我是否以错误的方式使用replaceWith?以及如何从新生成的内容中选择元素?
以下是代码:
Jquery Part
$('#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");
});
答案 0 :(得分:3)
由于您要通过ajax $('.testB').click()
替换内容将无法正常工作,因为我假设您在文档就绪或类似的东西中注册该事件处理程序。创建事件处理程序依赖于registratoin时dom上存在的元素。如果要将事件处理程序附加到尚未附加到dom的元素,请使用.live()或.delegate()
$('.testB').click(function(){
alert("ok");
});
成为
$('.testB').live('click', function(){
alert("ok");
});
以下是jsfiddle上描述所有三种情况的示例。