删除JS选项卡,切换活动
knockout JS tabs, toggle active
我觉得我就快到了,但我一直在原地打转。我运行了两个循环,一个用于制表符,另一个用于制表符内容。它的循环很好,但现在我需要让正确的在加载时激活或不激活。
<div id="tab">
<ul class="nav nav-tabs" role="tablist">
<!--ko foreach: $parent.tabArray-->
<li data-bind="click: toggleActive(init), css: init ? 'active': ''">
<a data-bind="attr: {href: '#' + name}, text: name"></a>
</li>
<!--/ko-->
</ul>
</div>
我已经尝试使用这个toggleActive(init)函数(init是数组中对象的布尔值),并切换该值。然后一个内联布尔条件来决定这个元素是否具有css类"active"。这个功能不正常。什么好主意吗?
var tabSetUp = function () {
ko.components.register('MainContent', {
template: MCTemplate
});
var self = this;
self.toggleActive = function (clicked) {
if (clicked) {
return false;
}
else {
return true;
}
}
}
tabSetUp();
//example of my array
var MainViewModel = {
tabArray: [
{ name: 'bob', init: true },
{ name: 'bib', init: false },
{ name: 'bab', init: false },
{ name: 'bub', init: false },
{ name: 'beb', init: false },
]
};
最简单的方法是使用一个可观察对象来存储活动选项卡。
self.tabArray = [
{ name: 'bob'},
{ name: 'bib'},
{ name: 'bab'},
{ name: 'bub'},
{ name: 'beb'},
];
self.selectedTab = ko.observable(self.tabArray[0]);
当选项卡被单击时,使用click绑定。默认情况下,循环中的项将基于一个参数,在本例中是选项卡。然后,您可以使用css绑定来检查活动选项卡是否等于循环中的选项卡。$data将成为循环中的制表符:
<!--ko foreach: tabArray-->
<li data-bind="click: $parent.toggleActive, css: $parent.selectedTab() == $data ? 'active': ''">
<a data-bind="attr: {href: '#' + name}, text: name"></a>
</li>
<!--/ko-->
然后toggleTab
函数将设置活动选项卡:
self.toggleActive = function (tab) {
self.selectedTab(tab);
};
JsFiddle
您必须对代码进行一些更改。
var MainViewModel = {
tabArray: [
{ name: 'bob', init: true },
{ name: 'bib', init: false },
{ name: 'bab', init: false },
{ name: 'bub', init: false },
{ name: 'beb', init: false },
],
toggleActive: function (clicked) {
alert(clicked);
}
};
ko.applyBindings(MainViewModel);
当你想将参数化函数绑定到click
时,你必须使用click: function () { yourFunction(yourParameter); }
<ul class="nav nav-tabs" role="tablist">
<!--ko foreach: tabArray-->
<li data-bind="click: function() { $root.toggleActive(init) }, css: init ? 'active': ''">
<a data-bind="attr: {href: '#' + name}, text: name"></a>
</li>
<!--/ko-->
</ul>
工作示例https://jsfiddle.net/qm9ukac5/
相关文章:
- 将js添加到wordpress中以突出显示css活动菜单
- 结构 JS:如何防止扩展活动组
- 控制node.js应用程序's通过外部网站举办的活动
- 如何禁用typeahead:在远程typeahead.js中聚焦已填充的文本字段时处于活动状态
- jquery.nav.js活动部分高亮显示点击后停止工作
- 安卓webview活动,如何获取js返回值
- 传单.js:将活动链接到地图标记
- 如何在角度 JS 中保持会话活动
- 检查类是否处于活动状态,如果是,请运行外部.js文件?可能
- 节点.js后请求 - 保持会话活动
- HTML / JS内容的相机活动背景
- 有没有办法使用 JS 跳过下一个活动
- 覆盖Magento中的默认数据表单提交JS活动
- 如何在 Angular js 中更改活动链接的背景颜色
- 当鼠标离开区域时,或在Zurb Foundation中使用JS时,恢复到初始活动选项卡
- 从Node.js中的活动套接字重新创建http请求和响应
- Angular Js:如果我需要实时将状态从活动更改为非活动,请使用ng
- 安卓:根据上一次活动列表中的选择,修改本地静态html加载的JS
- 如何在Aurelia.JS中显示当前活动页面标题
- Sever幻灯片验证活动js函数