【问题标题】:execution of javascript after dom readydom准备好后执行javascript
【发布时间】:2013-11-20 19:32:30
【问题描述】:

这个问题被贴了好几次,我看了很多解决方案。

我的问题:

我想在DOM加载完成后执行setAccordionActiv(false)

function setAccordionActiv(paramActiv) {
    if(paramActiv) {
        $(".aui-toggler-content-wrapper").show();
    } else {
        $(".aui-toggler-content-wrapper").hide();
    }
} 

aui-toggler-content-wrapper 是 Liferay 中使用的 AUI 的一部分。

我尝试使用:

另一个文档 ready() 因为它们应该被序列化执行

这个问题的答案: forcing a jQuery ready block to run after all other ready blocks

这些是大多数问题的答案。

但是没有一个对我有用。

相反,alert() 确实有效,所以aui-toggler-content-wrapper 一定是原因。

如果我稍后执行setAccordionActiv(false),例如通过按钮单击它确实有效。

感谢任何帮助。

【问题讨论】:

  • 只需将您的函数调用包装在 $(document).ready 中。那应该可以。
  • 所以你的问题是 .aui-toggler-content-wrapper 不存在文档准备好了吗?
  • 是的,有点。但程序不会崩溃(空指针)而是跳过该命令。至少它看起来像。也许我应该改写我的问题。

标签: javascript jquery liferay


【解决方案1】:
$(document).ready(function(){
setAccordionActiv(false);
   ///////call function with ^^^parameter


 });
    function setAccordionActiv(paramActiv) {
        if(paramActiv) {
            $(".aui-toggler-content-wrapper").show();
        } else {
            $(".aui-toggler-content-wrapper").hide();
        }
    } 

参考.ready()

【讨论】:

    【解决方案2】:
    $(document).ready(function () {
        function setAccordionActiv(paramActiv) {
            if (paramActiv) {
                $(".aui-toggler-content-wrapper").show();
            } else {
                $(".aui-toggler-content-wrapper").hide();
            }
        }
        setAccordionActiv(paramActiv);
    }
    

    阅读DOM ready

    【讨论】: