javascript - jQuery UI 无法在事件函数之外获取选定的选项卡

标签 javascript jquery html jquery-ui jquery-ui-tabs

我有以下 HTML,我已将 Jquery 选项卡应用到其中:

<div id="lineitems">

  <ul>
    <li><a href="#not-issued" onClick="displayItems()">Not Issued</a></li>
    <li><a href="#issued" onClick="displayItems()">Issued</a></li>
    <li><a href="#search" onClick="displayItems()">Search</a></li>
  </ul>

<div id="not-issued">Not Issued Items</div>
<div id="issued">Issued Items</div>
<div id="search">Search for items</div>

</div>

我有以下 jQuery 函数,它可以完成它应该做的事情,当您单击“已发布”选项卡等时,它将返回“已发布”。

$("#lineitems").tabs({
  beforeActivate: function (event, ui) {
    var issued = ui.newPanel.attr('id'); //Get newly selected tab
    alert(issued);
  }
});

alert(issued);

第一个警报正确返回“已发出”或选择的任何选项卡,但第二个警报返回[object htmldivelement]。我不确定为什么它没有返回相同的值。我做错了什么?

为了将其放入上下文中,我试图获取所选选项卡的值,以便我可以相应地更改提交按钮的值,然后将(所选选项卡的)值传递给 ajax 函数。

我也尝试过使用:

$("#lineitems").bind("tabsactivate", function(event, ui) {
    issued = ui.newTab.index();
    alert(issued);
});

但是我再次遇到了同样的问题,即发出的变量在函数外部返回空。

编辑:使用 Bhushan Kawadkar 的答案我得到了它的工作,我还必须使用 toString()issued 更改为字符串来传递它正确地连接到Ajax函数。

我还遵循了 T J 的建议,从我的链接中删除了 onClick 事件,因为不需要它们,因为每次单击新选项卡时都会调用该函数。

最佳答案

你必须在函数外部声明变量才能在外部使用它, 见下面的代码

var issued = '';

$("#lineitems").tabs({
  beforeActivate: function (event, ui) {
    issued = ui.newPanel.attr('id'); //Get newly selected tab
    alert(issued);
  }
});

alert(issued);

编辑 - 您在 displayItems() 函数内多次绑定(bind)选项卡绑定(bind)。相反,您可以在 document.ready$(function(){ ..}); 中绑定(bind)一次。要将 issued 值传递给 displayItems 函数,请在 tabs beforeActivate 事件中调用它。

jQuery:

$(function() { //This is in the <head> tag on my HTML
    $( "#lineitems" ).tabs();

    //Both of these methods work, but only inside the function
    $("#lineitems").bind("tabsactivate", function(event, ui) {
        var issued = ui.newTab.index();
        alert("bind "+issued);
    }); 

    $("#lineitems").tabs({
      beforeActivate: function (event, ui) {
        var issued = ui.newPanel.attr('id'); //Get newly selected tab
        alert("tabs "+issued);
        displayItems(issued);
      }
    });
});

function displayItems(issued)
{
    alert("display "+issued);
    //lineItems(job, issued); call to Ajax function
}

并从 anchor 标记中删除 onclick="displayItems()"

<强> Demo

关于javascript - jQuery UI 无法在事件函数之外获取选定的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26014200/

相关文章:

javascript - 以安全的方式为 nodeJS 转换流设置编码

javascript - 将新行转换为段落/br HTML 标记,这可以是单个正则表达式吗?

javascript - 使用 "if"语句通过 JS 应用 CSS

jquery - 如何使用Jquery获取选中的复选框和相应的信息?

javascript - jQuery 图像重新加载器功能?

javascript - 单击“确定”按钮或 X(关闭)后如何删除 JQuery 对话框内容?

jquery - 使用 jQuery 添加动态内容时 DIV 不扩展

javascript - 显示自上次 ajax 调用以来的时间

php - 多文件 uploader 和查看器 php

html - JSF/PrimeFaces 与 HTML5 存储方法的兼容性