首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery函数未在Backbone View Render上触发

jQuery函数未在Backbone View Render上触发
EN

Stack Overflow用户
提问于 2017-06-29 09:27:01
回答 2查看 329关注 0票数 0

我有一个主干ItemView,它有一些带有类的DIV,还有一个DIV有类active

我写了一行jQuery代码来隐藏所有没有active类的元素,但是它不起作用。

代码语言:javascript
运行
复制
    Show.EventItemView = Marionette.ItemView.extend({
        template: '#id-template',
        events: {
            'click #js-tabs li.js-tab': 'tabs'
        },
        tabs: function(e) {
            var target = e.target,
                tab_id = $(e.currentTarget).attr('js-data-tab-id');

            $('#js-tabs .js-tab-content').hide();
            $('#js-tabs .js-tab-content#' + tab_id).show();
        },
        initialize: function() {
            $('#js-tabs .js-tab-content:not(.active)').hide();
            console.log('Initialized');
        }
    });

"Initialized“文本将显示在控制台上,但不包含active类的元素不会被隐藏。

如果直接在Chrome控制台中运行这行$('#js-tabs .js-tab-content:not(.active)').hide();,将会工作,但应该会在视图渲染(或其他方法)时自动触发。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-29 15:00:29

实例化视图时,在render()方法之前调用initialize()。这意味着视图还没有被渲染。Marionette.ItemView为您提供了一些有用的回调方法。

每次渲染时都会调用onRender()。如果您将模型同步到服务器,当模型内容更新时,这可能会被调用多次。

在一个区域中显示的每个视图都会调用一次onShow()。如果你使用regions,那么就使用这个。

票数 2
EN

Stack Overflow用户

发布于 2017-06-29 11:28:42

在Backbone视图中,initialize是渲染视图时执行的第一个方法。因此,在这里,您甚至在视图呈现之前就试图进行操作。

尝试将该代码移动到render函数中,或者在加载视图(页面/内容)之后。

还要尝试在控制台中使用断点进行调试,以确保在执行该行代码之前是否加载了内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44814937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档