使用Defer检查稍后加载的元素

时间:2016-12-28 18:37:06

标签: javascript jquery

问题: 我有一个名为dashboard的容器,可以将不同的子视图加载到其中。所有子视图都有一个标题为sub-header的标题元素。我想要做的是从父仪表板JavaScript更新与该元素关联的类,但由于未加载子标题但我很难时间访问它。

建议我考虑使用_.defer函数。下面是我与仪表板关联的代码示例。有没有办法让我检查子标题元素是否已加载到DOm中了?

示例:

                    onRender: function () {

            var self = this;
            this.resizeMenu(this.model);
            this.listenTo(this.model, 'change:menuState', function () {
                self.resizeMenu(self.model);
            });

            _.defer(function(){

                console.log("Dashboard On Show Function");

                if ($('#dashboardBody').hasClass('minimized')) {

                    $("#sub-header").removeClass("mobile-subheader");
                    $("#sub-header").removeClass("full-subheader");
                    $("#sub-header").addClass("minimized-subheader");
                    console.log("DashboardBody Minimized");
                } else if ($('#dashboardBody').hasClass('mobile')) {

                    $("#sub-header").removeClass("full-subheader");
                    $("#sub-header").removeClass("minimized-subheader");
                    $("#sub-header").addClass("mobile-subheader");
                    console.log("DashboardBody Mobile");
                } else if ($('#dashboardBody').hasClass('expanded')) {

                    $("#sub-header").removeClass("mobile-subheader");
                    $("#sub-header").removeClass("minimized-subheader");
                    $("#sub-header").addClass("full-subheader");
                    console.log("DashboardBody Expanded");
                }
            })


        },

结果: 我看到我正在进入defer函数和if语句的控制台日志,但是没有使用新类更新带有id子标题的标头。

我是否应该将onRender函数之外的延迟语句移动到onShow中?

0 个答案:

没有答案