向服务器发送活动bootstrap nav-pills的请求

时间:2016-04-20 19:10:44

标签: javascript jquery html twitter-bootstrap

我正在使用Twitter Bootstrap v3创建“nav-pills”。我的每个选项卡都有一个Bootstrap表,我每5秒更新一次值。我的一个表更新的Java脚本代码如下所示:

function LoadpData()
{ 
  $(function() {
  $.getJSON(..........);
  return false;
});
};

setInterval( LoadpData, 5000);

我的HTML文件的子部分:

<ul class="nav nav-pills" id="Tabs">
        <li class="active"><a href="#Press" data-toggle="tab">Pr</a></li>
        <li><a href="#Fl" data-toggle="tab">Fl</a></li>
        <li><a href="#Te" data-toggle="tab">Te</a></li>
        <li><a href="#Pu" data-toggle="tab">Pu</a></li>
        <li><a href="#Va" data-toggle="tab">Co</a></li>
</ul>

我想要做的是找到哪个选项卡处于活动状态,然后仅更新该选项卡上的表的数据。所以我想在每个LoadData()JS函数的顶部添加一个if语句来检查并查看该选项卡是否处于活动状态,如果是,则将.getJSON请求发送到服务器以获取值,否则什么都不做。我搜索并发现我应该能够通过使用此选择器$('#Tabs li.active')找到活动选项卡。此外,我的每个选项卡都有一个唯一的href属性,所以使用这个选择器$('#Tabs a [href =“#fl”]'),我应该能够获取jquery对象并查看它是否是活动的。我是jquery的新手,如果你能帮助我找到解决方案,我感谢你。

function LoadpData()
    {     
// if ($('#Tabs li.active') = $('#Tabs a[href="#Fl"]')){ 
//     $(function() {
//      $.getJSON(..........);
//      return false;
//      });
// }

2 个答案:

答案 0 :(得分:0)

您可以使用以下脚本:

  <script>
    $(document).ready(function() {
      setInterval(function() {
        findAndUpdate();
      }, 3000);

      function findAndUpdate() {
        // Find the active tab 
        var activeTab = $("#tabs").find("li.active");
        var activeTabIndex = activeTab.index();

        // Update the table according to index
        // var str = "";
        switch (activeTabIndex) {
          case 0:
            LoadpData0();
            //str="1";
            // update code for tab 0 table
            break;
          case 1:
            LoadpData1();
            //str="2";
            // update code for tab 1 table
            break;
          case 2:
            LoadpData2();
            //str="3";
            // update code for tab 2 table
            break;
          case 3:
            LoadpData3();
            //str="4";
            // update code for tab 3 table
            break;
          default:
            // default case             
        }
        //alert(str);
      }

      // if you want it should also be updated as soon as a user switches to a new tab, then    
      $("#tabs").on("click", "li", function() {
        setTimeout(function() {
          findAndUpdate();
        }, 30);
        // setting timeout is required as the tab should first change and then this function should be called
      });
    });
  </script>

答案 1 :(得分:0)

您可以在点击时在html值组上设置jquery侦听器。

function LoadpData() {
    $('ul.nav li a').click(function(){
    var $this = $(this);
    $this.text({your JSON values can go here});
  })
}

之后你需要拨打LoadpData()。按照惯例,建议您在LoadpData

中调用document.ready(function(){})

这是一个可能有用的jsFiddle:https://jsfiddle.net/superjisan/hnxLLknv/