如何让jquery.tablesorter与DocPad一起工作?

时间:2013-12-29 09:38:27

标签: tablesorter docpad

我正在尝试将tablesorter.js与DocPad一起使用。我已经将所需的行添加到docpad.coffee以加载tablesorter的css和js,并且我已经在我拥有要排序的表的页面中添加了对tablesorter()的调用。

但是,由于两个原因,生成的表没有正确排序:所有脚本都是延迟的(defer =“defer”),并且在加载脚本之前会出现对tablesorter()的调用,如下所示:

</tbody></table></p>
    <script>
    $(document).ready(function(){$("#mytable").tablesorter();})
    </script></div>
    </article>
    ...
<!-- Scripts -->
<script defer="defer" src="/vendor/jquery/1.10.2/jquery.min.js"></script>
<script defer="defer"  src="/vendor/jquery/tablesorter/jquery.tablesorter.js"></script>
<script defer="defer"  src="/vendor/modernizr/2.6.2/modernizr.min.js"></script>
<script defer="defer"  src="/vendor/twitter-bootstrap/dist/js/bootstrap.min.js"></script>
<script defer="defer"  src="/scripts/script.js"></script>
</body>

如果我删除延迟内容并将tablesorter()调用向下移动,则可以正常工作:

<!-- Scripts -->
<script src="/vendor/jquery/1.10.2/jquery.min.js"></script>
<script src="/vendor/jquery/tablesorter/jquery.tablesorter.js"></script>
<script src="/vendor/modernizr/2.6.2/modernizr.min.js"></script>
<script src="/vendor/twitter-bootstrap/dist/js/bootstrap.min.js"></script>
<script src="/scripts/script.js"></script>
<script>
    $(document).ready(function(){$("#mytable").tablesorter();})
</script>
</body>

我需要摆脱延迟设置,我需要在加载脚本后调用tablesorter()。我怎么能在DocPad 6.59.6中做到这一点?

1 个答案:

答案 0 :(得分:1)

我找到了一个修复和解决方法来让tablesorter工作。

  • 序列问题:为了在调用之前加载所有Javascript 到tablesorter(),我在默认布局中移动了脚本部分 (src/layouts/default.html.eco)作为<head/>的一部分加载, 不是<body/>最初的拉特部分。

  • 延迟问题:我无法弄清楚如何修改Docpad @getBlock('scripts')不包含defer="defer"设置。 然后,解决方法是不使用getBlock而是使用getBlock 硬编码脚本文件的引用。

总之,从这里开始:

<html>
...
<body>
...
<%- @getBlock('scripts')...
</body>
</html>

到此:

<html>
<head>
...
<script src="/vendor/jquery/...
...
</head>
<body>
...
</body>
</html>

修复了问题。我现在有一个维护问题,我必须维护布局中的脚本列表(而不是使用docpad.coffee中的脚本:部分);我可以忍受。