Tôi đang sử dụng http://datatables.net/Datatables Tôi không thể gọi một sự kiện onclick sau khi tôi phân trang?
Bảng giới thiệu trên trang chủ của họ giống với khá nhiều điều tương tự mà tôi đang sử dụng (pagination, cụ thể), ngoại trừ mỗi hàng có diện tích to click:
<a href="#" class="show-post"><%= Post.title %></a>
Liên kết này sẽ mở hộp thoại giao diện người dùng jquery hiển thị một số thông tin được yêu cầu ajax.
Phần 1 (giải quyết), xem phần 2 dưới đây
Tôi đang cố gắng để chạy một sự kiện onclick mà hoạt động bình thường trên trang một, nhưng ngay sau khi tôi đi đến trang 2 (hoặc bất kỳ người khác) nó ngừng hoạt động. Tôi đã kiểm tra nguồn để chắc chắn rằng nó không làm bất cứ điều gì vui trong tất cả các mã là infact có (tất cả các hàng, ngay cả những người ẩn bởi các pagination)
Bất kỳ ý tưởng?
$(function() {
$('#dialog').dialog({
autoOpen: false,
resizable: false,
maxHeight: 600,
width: 650,
modal: true,
beforeClose: function close() {
$('#dialog').html('');
}
});
$('.show-post').click(function() {
clickLink(this);
return false;
});
});
Nhờ những người đã trả lời câu hỏi của tôi! Tôi đã khắc phục vấn đề đó.
Phần 2
tiếp theo 'vấn đề' id của tôi thích để có được để làm việc được ... Tôi đang sử dụng các phím mũi tên trái và phải để cho phép họ 'quét' đến dòng kế tiếp hoặc trước đó và hiển thị thông tin. Điều này trái ngược với việc đóng nó và sau đó phải nhấp vào cái tiếp theo.
Tôi muốn làm như vậy khi bạn đến cuối trang, hoặc đầu trang hai, ẩn sau/trước tương ứng sẽ tự động tải trang đó, chuyển đến đầu (hoặc cuối), sau đó mở hộp thoại đó cho hàng đó trên trang khác.
heres chức năng nhấp chuột của tôi (tôi biết loại hình này của lẽ không có cấu trúc tốt nhất ... im mới để jquery)
$(document).ready(function() {
oTable = $('#posts').dataTable({
"bJQueryUI": true,
"iDisplayLength": 400,
"bAutoWidth": false,
"sPaginationType": "full_numbers",
"aLengthMenu": [[-1, 400, 100, 50], ["All", 400, 100, 50]]
});
$(this).keydown(function(e) {
var id = $("#dialog").attr("data-id");
currentPost = $("#posts tr[data-id=" + id + "]");
if (e.keyCode == 39 && $('#dialog').html() != "") {
/* Remove current background */
$(currentPost).blur()
$(currentPost).removeClass("current");
$(currentPost).find("td.sorting_1").removeClass("current");
var next = currentPost.next().find(".show-post");
clickLink(next);
} else if (e.keyCode == 37 && $('#dialog').html() != "") {
/* Remove current background */
$(currentPost).removeClass("current");
$(currentPost).find("td.sorting_1").removeClass("current");
var prev = currentPost.prev().find(".show-post");
clickLink(prev)
}
});
});
heres bấm chức năng thực tế
function clickLink(src) {
var post = $(src);
var id = $(post).parent().parent().attr('data-id');
/* Set background for current line */
$(post).parent().parent().find("td.sorting_1").addClass("current");
$(post).parent().parent().addClass("current");
$('#dialog').attr("data-id", id);
$('#dialog').load('/show-post/' + id, function() {
$.ajax({
type: "POST",
url: "/checkstatus/" + id,
dataType: "html",
error: function(data){
$("#dialog").fadeOut("fast", function() {
$("#dialog").html("<img src='/img/invalid.jpg' alt='invalid' style='margin: 40px auto; display: block;'>").fadeIn("slow");
});
}
});
/* Set Visited */
$(post).parent().parent().removeClass("visited").addClass("visited");
$('#dialog').dialog({
title: post.html(),
beforeClose: function close() {
$(post).parent().parent().find("td.sorting_1").removeClass("current");
$(post).parent().parent().removeClass("current");
},
buttons: {
"Email 1": function() {
$.ajax({
type: "POST",
url: "/get-email/" + id + "/" + "1",
dataType: "html",
success: function(data) {
window.location.href = data + "&subject=" + post.html();
}
});
},
}
});
$('#dialog').dialog('open');
});
return false;
};
Có vẻ như phân trang của bạn không được gắn lại trình xử lý nhấp chuột sau khi thay đổi. Hãy thử kết hợp lại các sự kiện hoặc sử dụng một hình thức năng động để đính kèm sự kiện như ủy nhiệm hoặc trực tiếp (tùy thuộc vào phiên bản jquery bạn đang sử dụng). – scrappedcola