一部のデータのページネーション用のリンクをいくつか生成しています。
リンクを生成する関数は次のとおりです。
function BuildPaginationNav(targetPage, pageSize) {
var numRecords = $('#movieListTable').children().length,
numPages = Math.ceil(numRecords / pageSize),
startRecord = ((targetPage - 1) * pageSize);
for (var i = startRecord; i <= startRecord + pageSize - 1; i++) {
$('div#movieListTable > div:eq(' + i + ')').fadeIn(200);
}
// Only use prev page and first page buttons/links if not on first page
if (targetPage > 1) {
$('#pagination').append('<br><a href="#" id="firstPage">First Page</a> | <a href="#" id="prevPage">Prev Page</a> | ');
} else if (targetPage = 1) {
$('#pagination').append('<br>First Page | Prev Page | ');
}
// Add the current page label
$('#pagination').append('<label id="currentPage">' + targetPage + '</label>');
// Only use next page and last page buttons/links if not on last page
if (targetPage < numPages) {
$('#pagination').append(' | <a href="#" id="nextPage">Next Page</a> | <a href="#" id="lastPage">Last Page</a>');
} else if ( targetPage === numPages) {
$('#pagination').append(' | Next Page | Last Page');
}
}
上記は意図したとおりに機能し、関数は、ページネーションの対象となるデータを取得する $.ajax 呼び出しの成功関数の最後で呼び出されます。
最初または最後のページにない場合、生成された HTML は次のようになります。
<div id="pagination">
<br>
<a href="#" id="firstPage">First Page</a> |
<a href="#" id="prevPage">Prev Page</a> |
<label id="currentPage">2</label> |
<a href="#" id="nextPage">Next Page</a> |
<a href="#" id="lastPage">Last Page</a>
</div>
必要なことは、クリックされたリンクの ID を取得して、適切なアクションを実行できるようにすることです。私はこれを試しました:
$('#pagination a').click(function() {
console.log(this.id);
});
そして私もこれを試しました:
$('#pagination a').on('click', function() {
console.log(this.id);
});
しかし、どちらも機能しません。生成された HTML と上記の jQuery を jsFiddle に配置すると機能しますが、完全なコードでは機能しません。
コードの他の場所でその関数を使用しているため、この場合 $.on() が機能しないことに特に驚いています。
生成された HTML を HTML としてページ自体に配置すると、jQueryが機能するため、リンクが動的に生成されるという事実に対応する必要があります。
これらのリンクのクリックを検出するにはどうすればよいですか?