jQuery 函数未在 Backbone 视图渲染上触发

jQuery function is not firing on Backbone View Render

我有一个 Backbone ItemView,它有一些 DIV 及其 class 和一个 DIV 有 class active .

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

    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" 文本显示在控制台上,但没有隐藏 class active 的元素。

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

感谢您的预付款。

在Backbone视图中,initialize是渲染视图时执行的第一个方法。所以在这里你甚至在渲染视图之前就试图操作。

尝试将该代码移动到渲染函数中或在加载视图 (page/content) 之后。

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

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

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

onShow() 在区域中显示的每个视图被调用一次。如果你使用 regions 然后使用这个。