【问题标题】:jsf stickyKit not working with ajaxjsf stickyKit 不适用于 ajax
【发布时间】:2014-07-31 05:49:45
【问题描述】:

我在 JSF 中使用 Sticky Kit 让我的左侧导航栏垂直滚动,当我执行 ajax 方法(将额外内容加载到主区域)时我需要它重新计算。

首先我在 $(document).ready(...) 中激活一次:

$("#navbar").stick_in_parent()

并且应该使用以下方式执行重新计算:

$("#navbar").trigger("sticky_kit:recalc")

但不幸的是,当我在我的 jquery ajax-listener(被触发)中调用它时,它没有被执行(我已经在 recalc 中添加了一个 alert("recalculate"))?

(我使用 JSF-Ajax-Jquery-Listener,因为默认的 .ajaxComplete() 不适用于 JSF)

【问题讨论】:

    标签: jquery ajax jsf sticky


    【解决方案1】:

    recalc 事件仅适用于 body 元素。来自文档:

    Sticky Kit 监听 document.body 上的一个事件。

    sticky_kit:recalc — 触发此事件以使所有粘性元素 被重新计算。更多信息如下。

    及以下:

    您可以通过触发 document.body 上的事件来重新计算:

    $(document.body).trigger("sticky_kit:recalc")

    【讨论】:

    • 不,它只是忽略了方法。之前的 alert("1") 和之后的 alert("2") 照常调用。它只是不进入方法。这与我在 JSF 中使用它有什么关系吗?
    • 也许,JSF 是否以正确的顺序生成 <script> 标签?
    • 是的,sticky Kit 的激活是有效的(它遵循正确)。只是当我想手动触发重新计算时,它会忽略它
    • 脚本启动时会调用 recalc 函数,所以如果 Sticky Kit 像你说的那样正常工作,警报就会显示出来。如果不是这种情况,则您的警报可能不在正确的位置。或者您编辑的脚本不是浏览器中加载的脚本。我先看看那个。
    • 我觉得你误解了我的问题;文档说我可以通过调用“$(document.body).trigger("sticky_kit:recalc")”来手动执行重新计算。我所说的警报显示在此触发操作之前和之后。每次我做一个ajax调用。只是触发动作被忽略了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多