大家好,我现在一直在研究这个特殊问题,PLZ帮助。 我看过jQuery: Refresh div after another jquery action? 它完全符合我的要求但只做一次!我有一个从db生成的表,当我点击删除它删除行并刷新div但之后没有任何我的jquery函数可以工作。
$('#docs td.delete').click(function() {
$("#docs tr.itemDetail").hide();
var i = $(this).parent().attr('id');
$.ajax({
url: "<?php echo site_url('kt_docs/deleteDoc'); ?>",
type: 'POST',
data: 'id=' + i,
success: function(data) {
$("#docs tr.itemDetail").hide();
$("#f1").html(data); // wont work twice
//$("#docs").load(location.href+" #docs>*"); //works once as well
}
});
});
在我的身体里我有
<fieldset class='step' id='f1'>
<?php $this->load->view('profile/docs_table'); ?>
</fieldset>
profile / docs从db读取数据。 <table id='docs'>....</table>
和我的控制员:
function deleteDoc() {
$id = $_POST['id'];
$this->load->model('documents_model');
$del = $this->documents_model->deleteDocument($id);
return $this->load->view('docs_table');
}
提前致谢!
答案 0 :(得分:3)
你是否在任何地方删除任何与$('#docs td.delete')匹配的表达式?如果是这样,请考虑使用$ .live(),它会将您的函数附加到所有匹配元素,无论当前还是将来; e.g。
$('#docs td.delete').live('click', function() {
// Do stuff.
});
答案 1 :(得分:2)
尝试使用bind()
代替click()
。 click()
方法不适用于动态添加到DOM的元素,这可能是它第一次工作的原因,而不是在您使用更新的内容重新填充它之后。
你应该只需要替换
$('#docs td.delete').click(function() {
与
$('#docs td.delete').bind('click', function() {
答案 2 :(得分:1)
您是否使用通过ajax获取的数据替换了具有事件的html元素?如果你最终替换了td.delete元素,那么新的元素将不会自动获得绑定。