javascript - 单击处理程序变量仅全局
问题描述
似乎在单击处理程序中,您不能将变量传递给函数。因此,您必须始终在全局范围内声明它们。我是对的吗?
例如:
$("#modalCancel,#modalClose").click(function()
{
if(update == false)
{
modalCloseCancel(testcaseId);
}
else
{
modalCloseCancelUpdate(testcaseId, $("#radio-previous_"+testcaseId).val());
}
});
这里 update 和 testcaseId 是变化的变量。我不能将它们作为参数传递给 function() ,而是需要在处理程序上方全局声明它们。我认为没有其他办法。所以如果下面还有其他功能,他们必须小心。
解决方案
data-*
您可以使用属性和.data
方法轻松地将变量存储在元素本身上:
$('.clickme').on('click',function(){
var update = $(this).data("update");
console.log(update);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="clickme" data-update="true">Click me (true)</button>
<button class="clickme" data-update="false">Click me (false)</button>
推荐阅读
- microsoft-graph-api - Microsoft Graph -- 获取用户区域设置/语言
- php - Foreach 循环在另一个 foreach 中重复
- vi - 错误:'vi: No terminal database found',同时从屏幕会话运行 vi
- rust - 如何以独立于平台的方式使用leading_zeros/trailing_zeros?
- c# - ConnectAsync 的 SocketTasksExtensions 结果
- ruby-on-rails - 两个表的Ruby on Rails迭代,加载id
- java - 如何在 zk 中找到给定组件的根组件?
- sql - 如何在一个 PL/SQL 语句中编写多个 SQL 查询语句和 PL/SQL 语句
- linux - 为什么 sed 脚本不删除行?
- android - 使用 RobolectricTestRunner/AndroidJUnit4 测试 PdfDocument:文档已关闭