首页 > 解决方案 > 单击处理程序变量仅全局

问题描述

似乎在单击处理程序中,您不能将变量传递给函数。因此,您必须始终在全局范围内声明它们。我是对的吗?

例如:

$("#modalCancel,#modalClose").click(function()
{
   if(update == false)
   {
        modalCloseCancel(testcaseId);
   }
   else
   {
        modalCloseCancelUpdate(testcaseId, $("#radio-previous_"+testcaseId).val());
   }
});

这里 update 和 testcaseId 是变化的变量。我不能将它们作为参数传递给 function() ,而是需要在处理程序上方全局声明它们。我认为没有其他办法。所以如果下面还有其他功能,他们必须小心。

标签: javascriptjquery

解决方案


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>


推荐阅读