【问题标题】:How to run a function after an external JS script finishes running如何在外部 JS 脚本完成运行后运行函数
【发布时间】:2015-12-10 16:38:58
【问题描述】:

我正在尝试了解如何确保我的代码在外部 JS 文件完成运行后运行。

如果您需要特定的实现,可以查看我试图帮助回答的这个 SO 问题:How to get the last table row no matter the sort?

TDLRbootstrap-sortable.js 中的脚本运行表格排序。此表排序完成后;我想这样做,以便我可以运行一个 sn-p,它将一个简单的 CSS 类添加到新排序表中的最后一个元素。通过这个 JQuery sn-p 可以轻松实现类的添加:

var lastRow = $(this).closest("table").find("tbody tr:last");

if(!lastRow.hasClass("dropup")){
    // Removing dropup class from the row which owned it
    $(this).closest("table").find("tbody tr.dropup").removeClass("dropup");
    // Adding dropup class to the current last row
    lastRow.addClass("dropup");
}

我想知道:

  1. 是否可以在外部脚本运行完成后运行我的脚本?
  2. 如果不是,您能解释一下原因吗?
  3. 我已经在考虑修改 bootstrap-sortable.js 以将我的脚本添加到其中,这是最好的推荐方法吗?

奖金回合!(仅当您觉得需要挑战时)。

除了使用 bootstrap-sortable.js 对链接的问题进行排序之外,还有更好的、自己动手的解决方案吗?

谢谢大家!

【问题讨论】:

  • 活动$this.trigger('sorted')不是你想要的吗?
  • 您是否有理由要使用 js 脚本而不仅仅是表格中最后一行的 CSS 选择器?表 tr:last-of-type { ... } ?
  • @DaveNewton 可能,我不确定您的 sn-p 是如何工作的,所以如果您认为这是正确的方法,请随时扩展答案
  • @beauXjames 只是因为它需要在表格完成排序后发生。如果可以通过 CSS 识别它,那么这将是一种更简单的方法。
  • @AGE 这是排序完成时在引导排序代码中触发的事件。

标签: javascript jquery twitter-bootstrap jquery-ui


【解决方案1】:

我要感谢 Dave Newton 引导我回答这个非常简单的问题。

JSFiddle

$(document).ready(function() {
  $("#MyTable").on('sorted', function(){
    var lastRow = $("#MyTable").find("tbody tr:last");
      // Removing dropup class from the row which owned it
      $("#MyTable").find("tbody tr.dropup").removeClass("dropup");
      // Adding dropup class to the current last row
      lastRow.addClass("dropup");
  });
});

这很棒,简单而轻巧,它也符合链接的问题。谢谢戴夫!

【讨论】:

  • 没有汗水。供参考:我从未使用过该库。我首先查看了源代码中的任何回调事件(就像我认为 applyLast 可能是一个回调,但事实并非如此)然后只是寻找在排序结束时发生的事情。 trigger 就是它,所以认为这是他们指示排序结束的方法,因此你需要什么:)
  • @DaveNewton 我同意我自己在他们的源代码中也注意到了所有这些,但是在事件结束时我不知道用什么来收听。所以我学到了一些很棒的新东西
猜你喜欢
  • 2018-11-17
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 2016-06-07
相关资源
最近更新 更多