如何在回发期间存储标签的当前位置?

时间:2014-01-15 13:50:42

标签: javascript jquery asp.net vb.net

我使用ctl0存储制表符的当前位置。这是存储当前选项卡值的正确方法。我读了一些使用客户端ID bcz的地方,它会在运行时不匹配。我如何得到客户端ID。我使用隐藏的领域存储。我做错了什么 这是我的HTML

<ul class='tabs'>
    <li><a href='#tab1'>Tab 1</a></li>
    <li><a href='#tab2'>Tab 2</a></li>
    <li><a href='#tab3'>Tab 3</a></li>
  </ul>
  <div id='tab1'>
    <p>Hi, this is the first tab.</p>
  </div>
  <div id='tab2'>
    <p>This is the 2nd tab.</p>
  </div>
  <div id='tab3'>
    <p>And this is the 3rd tab.</p>
  </div>

脚本

$(document).ready(function () {

        $('ul.tabs').each(function () {
            // For each set of tabs, we want to keep track of
            // which tab is active and it's associated content
            var $active, $content, $links = $(this).find('a');


            // If the location.hash matches one of the links, use that as the active tab.
            // If no match is found, use the first link as the initial active tab.
            if ($('#_ctl0_hdnCurrentTabSelection').val() == "") {
                $('#_ctl0_hdnCurrentTabSelection').val(location.hash)
            }

            $active = $($links.filter('[href="' + $('#_ctl0_hdnCurrentTabSelection').val() + '"]')[0] || $links[0]);
            $active.addClass('active');
            $content = $($active.attr('href'));

            window.location.href = window.location.href.toString() + $active.attr('href');


            // Hide the remaining content
            $links.not($active).each(function () {
                $($(this).attr('href')).hide();
            });


            // Bind the click event handler
            $(this).on('click', 'a', function (e) {

                // Make the old tab inactive.
                $active.removeClass('active');
                //window.location.href = window.location.href.toString().replace($active.attr('href'), '');
                $content.hide();

                // Update the variables with the new link and content
                $active = $(this);
                $('#_ctl0_hdnCurrentTabSelection').val($active.attr("href"))
                $content = $($(this).attr('href'));

                window.location.href = window.location.href.toString().split('#')[0] + $active.attr('href');

                // Make the tab active.
                $active.addClass('active');
                $content.show();



                // Prevent the anchor's default click action
                e.preventDefault();
            });
        });

vb代码

 hdnCurrentTabSelection.Value = Request.Form(hdnCurrentTabSelection.UniqueID)

* aspx代码

 <input type="hidden" ID="hdnCurrentTabSelection"  runat="server" />

1 个答案:

答案 0 :(得分:0)

不确定任何容器内是否有hiddencontrol。为了安全起见,你可以在jquery中这样做: 而不是:

$('#_ctl0_hdnCurrentTabSelection').val()

使用此:

$('#<%= hdnCurrentTabSelection.ClientID %>').val()

此外,这行代码与您正在进行的操作不符,我建议将其评论

hdnCurrentTabSelection.Value = Request.Form(hdnCurrentTabSelection.UniqueID)

您的jquery中的许多地方都缺少;您需要修复它们才能正常工作。

相关问题