使用带有select选项的jquery ui选项卡传递变量

时间:2012-12-18 17:38:43

标签: jquery jquery-ui jquery-ui-tabs jquery-tabs

我正在为每个包含表单元素的应用程序使用选项卡。当用户导航到其他选项卡并修改字段时,正在设置隐藏变量“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事件,例如:

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

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

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

我可以传递一些参数,例如......上一个标签... select事件会作为自定义参数吗?

1 个答案:

答案 0 :(得分: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()的详情,请参阅here