【问题标题】:Getting Target URL from jQuery-UI Tabs从 jQuery-UI 选项卡获取目标 URL
【发布时间】:2009-08-31 20:48:42
【问题描述】:

我正在开发一个大量使用 jQuery 选项卡和 Ajax 的项目。将数据加载到选项卡本身很简单,但选项卡中的数据需要通过位于选项卡 div 之外的选择框进行过滤。

这是我的问题开始的地方。假设我的选项卡对 URL“tab1.html”进行了 Ajax 调用。 jQuery tabs 将此目标更改为类似于“#ui-tabs-10”的哈希值,但我可以通过以下代码获取原始 URL:

    $("#tabs").tabs({
        select: function(event,ui) {
            var url = $.data(ui.tab, 'load.tabs');
            ...do stuff with url
        }
    });

但我似乎无法在此事件调用之外访问 ui.tab 对象。所以我的选择框更改事件最终看起来像这样:

var urls = {
    0 : "tab1.html",
    1 : "tab2.html",
    2 : "tab3.html"
}

$('#selectBox').change(function(){
    var tabs = $("#tabs").tabs();
    var id = $('#selectBox').attr("selectedIndex");
    var selectedTab = tabs("option", "selected");
    var newUrl = urls[selectedTab] + "?id=" + id;
    tabs("url", selectedTab, newUrl);
    tabs("load", selectedTab);
});

我的问题是哈希映射。我不需要它,它会复制我已经编码到选项卡 div 本身的信息。

<div id="tabs">
    <ul>
        <li><a href="tab1.html">tab1</a></li>
        <li><a href="tab2.html">tab2</a></li>
        <li><a href="tab3.html">tab3</a></li>
    </ul>
</div>

我已经用尽了 Firebug 中的文档和 DOM 树,但无济于事。关于如何从选项卡事件外部检索 href 的任何想法?

我正在使用 jQuery UI 版本 1.7.2。 Muchos gracias 提前。你们是最棒的。

【问题讨论】:

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


    【解决方案1】:

    以下内容会将 href 写入控制台。

    提醒 ajax 选项卡 href 的 here 的演示

    $('#tabs a').each(function() {
       var href = $.data(this, 'href.tabs');
       console.log(href);
    })
    

    【讨论】:

    • 这正是我想要的。谢谢!
    【解决方案2】:
    var links = $("#thetabs > ul").find("li a");
    var url = $.data(links[tabnum], 'href.tabs');
    

    tabnum 是您希望 url 来自的选项卡的从零开始的索引

    【讨论】:

      【解决方案3】:

      您还可以在选项卡链接中设置标题属性。

      <div id="tabs">
          <ul>
              <li><a href="tab1.html" title="First tab contents">tab1</a></li>
              <li><a href="tab2.html" title="Second tab contents">tab2</a></li>
              <li><a href="tab3.html" title="Third tab contents">tab3</a></li>
          </ul>
      </div>
      

      这样,JQueryUI 将根据标题创建带有 id 的 div,空格替换为下划线,因此您应该能够使用类似的方式访问 div

      $("#First_tab_contents")
      

      干杯!

      【讨论】:

        猜你喜欢
        • 2023-03-10
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 2010-09-22
        • 2012-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多