我有一个Backbone ItemView,它有一些带有类的DIV,一个DIV有类active
。
我编写了一个jQuery行来隐藏所有没有类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');
}
});
“已初始化”文本正在控制台上显示,但没有类active
的元素未被隐藏。
如果直接在Chrome控制台中运行此行$('#js-tabs .js-tab-content:not(.active)').hide();
,则可以正常工作,但应在视图渲染(或其他方法)上自动启动。
感谢您的任何进展。
答案 0 :(得分:2)
initialize()
方法之前调用 render()
。这意味着视图尚未呈现。 Marionette.ItemView
为您提供了一些有用的回调方法。
onRender()
。如果将模型同步到服务器,则在模型内容更新时可能会多次调用此模型。
onShow()
一次。如果您使用regions,请使用此功能。
答案 1 :(得分:0)
在Backbone视图中,initialize是渲染视图时执行的第一个方法。所以在这里你甚至试图在渲染视图之前进行操作。
尝试将该代码移动到渲染功能中或在加载视图(页面/内容)之后。
还尝试在控制台中使用断点进行调试,以确保在执行该行代码之前是否加载了内容。