我有這個代碼顯示一個主題列表,刪除和編輯數據表中的按鈕。爲什麼JQuery點擊功能在dataTable的後續頁面中不起作用?
Display.php的
<table data-toggle="table" class="table table-striped table-hover">
<thead>
<tr>
<th><input type="checkbox" name="all_topic"></th>
<th>Topic</th>
<th>Date Created</th>
<th>Date Update</th>
<th>Options</th>
</tr>
</thead>
<tbody>
<?php
$topics = array();
$faq = new Faq;
$topics = $faq->all();
?>
<?php $i = 1;
foreach($topics as $topic) : ?>
<tr id="tr-id-<?php echo $i; ?>" class="tr-class-<?php echo $topic->id; ?>" data-topic-id="<?php echo $i; ?>">
<td><input type="checkbox" name="topic[]" value="<?php echo $topic->id; ?>" class="faq-checkbox"></td>
<td id="td-id-<?php echo $i; ?>" class="td-class-<?php echo $i; ?>">
<?php echo $topic->topic; ?>
</td>
<td><?php echo $topic->date_created; ?></td>
<td><?php echo $topic->date_updated; ?></td>
<td>
<a class="btn btn-info" href="faqs-edit-topic.php?id=<?php echo $topic->id; ?>">Edit</a>
<button class="btn btn-danger" data-toggle="modal" data-target="#faq-delete-modal-<?php echo $topic->id; ?>" >Delete</button>
<div id="faq-delete-modal-<?php echo $topic->id; ?>" class="modal fade" tabindex="-1" role="dialog" >
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Delete Topic</h4>
</div>
<div class="modal-body">
<p>Delete <b><i><?php echo $topic->topic; ?></i></b> ? </p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-danger faq-delete-topic" data-modal-id="faq-delete-modal-<?php echo $topic->id; ?>" data-topic-id="<?php echo $topic->id; ?>" >Delete </button>
</div>
</div>
</div>
</div>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
的script.js
$(document).ready(function(){
$('.faqs table').dataTable({
searching: false,
"order": [[3, 'desc']],
"columns": [
{ orderable: false, width: "10%" },
null,
null,
null,
{ orderable: false, width: "20%" }]
});
$("button.faq-delete-topic").click(function(){
var $topic_id = $(this).attr("data-topic-id");
var modal_id = "#" + $(this).attr("data-modal-id");
$.post('faqs-delete-topic.php',{'topic_id': $topic_id}, function(success){
console.log(success);
if(success) {
// $("table tbody tr[data-topic-id="+ $topic_id +"]").remove();
$(modal_id).modal('hide');
$('.faqs table').DataTable().row(".tr-class-"+$topic_id).remove().draw(false);
display_message('Topic successfully deleted.');
}
});
});
});
現在,當我有話題的一個長長的清單,數據表會自動創建一個分頁顯示在同一時間的主題列表。每當我嘗試使用刪除按鈕刪除主題時,它會顯示模式,然後單擊模式上的刪除按鈕將刪除主題,但僅在數據表的第一頁上顯示。如果我嘗試去查看數據表的下一頁,那麼script.js中的click函數似乎不能識別模式上的刪除操作。我只能在數據表的第一頁上刪除,但不能在後續頁面上刪除。
這個問題似乎是什麼問題?請幫忙。多謝你們。
每次顯示新行時(對於每個頁面),您必須爲每行添加邏輯,最好使用來自數據表api的正確事件,它們的示例基礎非常慷慨,檢查它,您可以直接綁定發佈行渲染事件在您當前的代碼 – mikus
謝謝..他們有美麗的文檔。 – Paul
@mikus說了什麼。不要忘記在更新顯示時更新可見和不可見元素中的'aria-hidden'屬性。 –