jquery 分页/排序时自定义js停止工作

cbwuti44  于 2022-12-18  发布在  jQuery
关注(0)|答案(1)|浏览(127)

我运行了一些定制的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">&lt;</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">&gt;</a></li>
  </ul>
</div>


有没有一种方法可以在部分页面刷新而不是点击时运行js?

kokeuurv

kokeuurv1#

好像少了点什么,所以我想...
有一个js遵循的流程。页面被加载,然后代码按照文件中出现的顺序执行(大部分)。
所以,当你在html代码创建一个html元素之前执行一个js代码来操作它的时候,它是不会工作的。
jQuery只是一个 Package 精美的javascript。这意味着您正在使用的setTimeout,当它被执行时-它被应用于现有的元素。分页后,您有新的元素,jQuery没有应用于这些元素。
您需要的是将setTimeout也插入到分页回调中,这样它将应用于刚刚创建的新元素。

相关问题