【问题标题】:How to find selected tab on KendoTabStrip on page load?如何在页面加载时找到 KendoTabStrip 上的选定选项卡?
【发布时间】:2016-04-26 18:42:26
【问题描述】:

我正在使用 Kendo UI MVC,并且我在 acshtml 页面上有一个 kendoTabStrip。默认情况下,我选择页面加载时的第一个选项卡。所有其他选项卡都使用 AJAX 动态加载。 问题:我试图找到选定的选项卡,以便找到它的子项? 找到活动选项卡的一种方法是调用不带参数的 select() 方法,或者另一种方法是检查类名“k-state-active”,但是这两种方法都不起作用

<section class="tpt-tabstrip">
    @(Html.Kendo().TabStrip()
    .Name("MyTabStrip")    
    .Animation(false)    
    .Items(items =>
    {
        foreach (var revision in Model.MyCollection)
        {
            items.Add()
            .Text(revision.Name)
            .LoadContentFrom("MyActionMethod", "MyController", Model.ID);
        }
    })
    )    
</section>
<script src="~/Scripts/MyScript.js"></script>

请注意,上面在cshtml中,脚本标签位于页面末尾。
下面是脚本代码

$(function(){       
    var tabStrip = $("#MyTabStrip").getKendoTabStrip();
    if (tabStrip != null && tabStrip.tabGroup.length > 0) {
        tabStrip.select(0); // this line is getting executed for sure
    }

    // the line below returns -1 here why?????
    var index = tabStrip.select().index(); 

    // another way to find active tab is by checkikng class name 'k-state-active' however it didnt work either. 
    // jQuery couldnt find any element with class 'k-state-active'
    $('.k-state-active')
})

更新1
tabstrip 的激活事件对我不起作用,因为每次我选择选项卡时都会触发它。我需要一个只触发一次的事件。最终我想在选定的选项卡上找到 NumericTextBox 控件并将“更改”事件处理程序附加到这些控件。如下所示

$(function(){
    var tabStrip = $('#MyTabStrip').data("kendoTabStrip");
    tabStrip.bind('activate', function (e) {
       $('[data-role="numerictextbox"]').each(function(){
           $(this).getKendoNumericTextBox().bind("change",function(e){
              alert('changed');
        })
       })
    });
})

每次我选择选项卡时,更改事件处理程序都会附加到 NumericTextBox

【问题讨论】:

  • tabStrip.select() 返回什么?

标签: kendo-ui kendo-asp.net-mvc kendo-tabstrip


【解决方案1】:

$('.k-state-active') 工作正常,它将从 DOM 返回两个元素。您正在尝试在 $(document).ready 中选择元素,这就是您没有获取元素的原因,因为尚未呈现选项卡控件。

尝试编写您的代码 onActivate 剑道标签条控件事件。 OnActivate 事件在标签可见且动画完成后触发。在 2014 年第二季度之前,此事件在选项卡显示之后但在动画结束之前调用。此事件仅针对具有关联内容的选项卡触发。 在http://docs.telerik.com/kendo-ui/api/javascript/ui/tabstrip#events-activate 上查看更多信息

第一个标签名称

<li class="k-item k-state-default k-first k-tab-on-top k-state-active" role="tab" aria-controls="RoleTabs-1" style="" aria-selected="true">
<span class="k-loading k-complete k-progress"></span>
<a class="k-link">Tab Name</a>

第二个标签内容

<div class="k-content k-state-active" id="RoleTabs-1" style="display: block; height: auto; overflow: auto; opacity: 1;" role="tabpanel" aria-expanded="true">

【讨论】:

  • “k-state-active”类何时添加到选项卡?
  • 当任何选项卡被选中时,"k-state-active" 类将应用于选项卡链接和 div,包含该选项卡的内容。
  • 如果您在文档就绪功能中选择选项卡并立即尝试查看 tabstrip 是否有任何具有类 'k-state-active' 的选项卡,则返回 false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
相关资源
最近更新 更多