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 に答える