我运行了一些定制的jQuery来处理动态代码的外观。加载这个引导表/数据需要一点时间,所以我使用了setTimeout。它在分页/排序之前工作得很好。
setTimeout( function(){
$('.entity-notes').addClass('timeline');
$( 'p:empty' ).remove();
$(".text *").removeAttr("style");
//etc
}, 2400);
只要我尝试对表排序或在页面之间移动(分页),代码就会停止工作。
我怎样才能保持jQuery工作时分页/排序?我需要运行脚本再次点击?..或禁用 AJAX ?
- 更新
我已经把这个用于排序(.sort-enabled.sort a),但是仍然不能用于分页(.pagination〉li〉a)
$("body").on( "click", ".pagination>li>a, .sort-enabled.sort a", function ( event ) {
setTimeout( function(){
这是分页的样子:
<div class="jquery-bootstrap-pagination">
<ul class="pagination">
<li class="disabled"><a data-page="0" role="button" aria-label="Previous page"><</a></li>
<li class="active"><a href="#" data-page="1" role="button" aria-current="page">1</a></li>
<li><a href="#" aria-label="page 2" data-page="2" role="button">2</a></li>
<li><a href="#" data-page="2" role="button" aria-label="Next page">></a></li>
</ul>
</div>
型
有没有一种方法可以在部分页面刷新而不是点击时运行js?
1条答案
按热度按时间kokeuurv1#
好像少了点什么,所以我想...
有一个js遵循的流程。页面被加载,然后代码按照文件中出现的顺序执行(大部分)。
所以,当你在html代码创建一个html元素之前执行一个js代码来操作它的时候,它是不会工作的。
jQuery只是一个 Package 精美的javascript。这意味着您正在使用的
setTimeout
,当它被执行时-它被应用于现有的元素。分页后,您有新的元素,jQuery没有应用于这些元素。您需要的是将
setTimeout
也插入到分页回调中,这样它将应用于刚刚创建的新元素。