2

我正在为每个包含表单元素的应用程序使用选项卡。当用户导航到不同的选项卡并修改字段时,将设置隐藏变量“IsDirty”。

当我在选项卡上实现 beforeActivate 事件时...我检查是否有任何值已更改并将隐藏变量设置为“IsDirty”,我在 beforeActivate 中执行此操作,因为您可以访问旧选项卡和新选项卡,例如:

    beforeActivate: function (event, ui) {
        ...
        $panel_Old.find("input#hdIsDirty").val('0');
        $tabs.tabs('select', $tab_New.index());
        $panel_Old.find("input#hdIsDirty").val('1');
        ...
     },

然后我也实现了选择事件,例如:

     select: function (event, ui) {
         // other code here
     }

我的问题是……在 beforeActivate 事件中……当我打电话时

    $tabs.tabs('select', $tab_New.index());

我可以传递一些参数,例如...上一个选项卡...选择事件将作为自定义参数吗?

4

1 回答 1

1

答案是否定的,除非您修改小部件本身,否则您不能将自定义参数传递给事件。

如果您愿意,您可以做的是为您的事件中的小部件设置一个属性,然后稍后检索它们:

beforeActivate: function (event, ui) {
    ...

    $(this).attr('data-oldtab', $tab_Old.index()); // or whatever information you want

    $panel_Old.find("input#hdIsDirty").val('0');
    $tabs.tabs('select', $tab_New.index());
    $panel_Old.find("input#hdIsDirty").val('1');
    ...
 },

然后,绑定时select

 select: function (event, ui) {
     oldtabindex = $(this).data('oldtab');
     // other code here
 }

有关更多信息,data()请阅读此处

于 2012-12-18T19:04:51.790 回答