jQuery UI可以'无法在事件功能之外获取所选选项卡
jQuery UI can't get selected tab outside of event function
我有以下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函数,它做它应该做的事情,当你点击issued选项卡等时,它会返回"issued"。
$("#lineitems").tabs({
beforeActivate: function (event, ui) {
var issued = ui.newPanel.attr('id'); //Get newly selected tab
alert(issued);
}
});
alert(issued);
第一个alert
正确地返回"issued"或选择了任何选项卡,但第二个alert
返回[object htmldivelement]
。我不知道为什么它没有返回相同的值。我做错了什么?
为了将其放在上下文中,我试图获取所选选项卡的值,这样我就可以相应地更改提交按钮的值,然后将(所选选项卡)的值传递给ajax函数。
我也尝试过使用:
$("#lineitems").bind("tabsactivate", function(event, ui) {
issued = ui.newTab.index();
alert(issued);
});
但我再次遇到了同样的问题,即发出的变量在函数外返回空。
EDIT:使用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()
函数内多次绑定tabs
和bind
。相反,您可以在document.ready
或$(function(){ ..});
中绑定一次。若要将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
}
并从锚点标签中删除onclick="displayItems()"
。
演示
- 您无法访问外部值的原因是将其存储在局部变量中
- 你的小提琴不起作用的原因是
- fiddle被设置为运行
onload
,因此displayItems
将被封装在load
事件处理程序中,因此无法在外部访问 - 以下
var job = document.getElementById('joblist').value;
抛出错误,因为与id
joblist
没有冲突
- fiddle被设置为运行
理想情况下,您的代码应该是:
$("#lineitems").tabs({
beforeActivate: function (event, ui) {
},
activate: function (event, ui) {
issued = ui.newTab.index(); // issued is global so you can access it outside
alert(issued);
}
});
<link href="http://code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.1/jquery-ui.js"></script>
<div id="lineitems">
<ul>
<li><a href="#not-issued">Not Issued</a>
</li>
<li><a href="#issued">Issued</a>
</li>
<li><a href="#search">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>
相关文章:
- 正在获取select上的功能id
- 在谷歌api v3中使用地理自动完成功能获取邮政编码
- jQuery点击功能在获取请求后不起作用
- 如何使用位置获取滚动功能获取 HTML 中的元素标签
- 如何创建一个脚本,该脚本给定网站列表,它使用其搜索功能来获取信息
- 正在尝试获取此代码'在wordpress页面中工作的功能
- JavaScript/jQuery:获取选择功能在Firefox和Chrome中不起作用
- 仅通过 Google 地图 API 自动完成功能获取城市名称
- 使用 firebase 获取$add angular 应用程序不是一个功能
- 如何从 html 的文本字段获取值到 JavaScript 功能
- 从数据库中获取图像并将其链接到php中的功能或新闻等
- Javascript - 更快的功能:线性列表搜索或获取对象值
- 如何在单击按钮上获取JavaScript功能
- 如何从控制器功能内部获取$scope
- 在功能挂钩之前获取功能名称
- Node.js selenium webdriver - 在测试中获取浏览器功能
- 使用 Javascript 从浏览器的视图源代码功能中获取 HTML
- 获取两个位置之间的距离和时间的功能
- 快速滚筒嘘声+获取文本功能
- 浏览器自动阻止获取用户媒体功能