0

我有一个如下所示的屏幕: 代理画面

选项卡通过选项卡更改事件上的 ajax 调用加载。页面顶部的网格需要能够触发特定选项卡的显示事件(因为它提供了一个 id 等...),但它仅适用于单击的第一个项目,几乎就像第二次单击被阻止.

简化代码

$(function() {

    var self = this;

    self.agencyId = -1;

    self.SwitchView = function(partialViewName, targetDiv) {
        alert('Switching To ' + partialViewName)
    };

    $("#AgencyTabs").tab();
    $("#AgencyTabs").on("show", function(e) {

        var target = "#partialContainer";
        var partialViewName = $(e.target).data("src");

        self.SwitchView(partialViewName, target);

        $("#AgencyTabs").tab();
    });



    $('#toolbar').on('click', '.action-button', function() {

        var iGrid = this;

        self.agencyId = $(iGrid).data('rowid');
        self.currTab = "Details";

        $('#AgencyTabs a[data-src="' + self.currTab + '"]').tab('show');

        return false;
    });


    $('#AgencyTabs a[data-src="Parameters"]').tab('show');

});​

我已经设置了这个小提琴来证明我的问题

4

1 回答 1

3

这是你需要的吗?

$("#AgencyTabs").on("show", function(e) {
    var target = "#partialContainer";
    var partialViewName = $(e.target).data("src");

    //self.SwitchView(partialViewName, target);

    $("#AgencyTabs").tab();
});

$("#AgencyTabs").on("click", function(e) {
    self.SwitchView($(e.target).data("src"), e.target);
});

据我了解,问题是SwitchView在已经选择选项卡时没有执行。此编辑通过将函数执行从onshow事件移动到事件来解决此onclick问题。

编辑:

小提琴现在SwitchView也在“查看”按钮上执行。但是,它并没有专门触发onshow事件,它只是调用函数。

编辑为 $('#toolbar').on('click', <...>); :

$('#toolbar').on('click', '.action-button', function() {

    var iGrid = this;

    self.agencyId = $(iGrid).data('rowid');
    self.currTab = "Details";
    self.targeted = $('#AgencyTabs a[data-src="' + self.currTab + '"]')

    self.SwitchView(self.currTab, self.targeted);

    self.targeted.tab('show');

    return false;
});
于 2012-11-22T09:57:01.747 回答