如何通过元素ID获取对应已定义的jQuery变量值?
如何通过元素ID获取对应变量的值?
嘿,这个问题其实很好解决,咱换个思路就能轻松搞定~
首先,你现在是把每个复选框的状态单独存在变量里,这样通过ID匹配变量确实有点麻烦。最靠谱的办法是把这些状态统一存到一个对象里,让ID直接对应对象的属性名,这样就能直接通过ID取值了,具体操作看下面:
第一步:初始化时用对象存储状态
把原来的三个变量改成一个对象的属性,这样变量名和复选框ID完全对应:
// 初始化复选框状态到对象中 const checkboxStates = { enabled: $("#enabled").prop("checked") ? '1' : '', local: $("#local").prop("checked") ? '1' : '', senior: $("#senior").prop("checked") ? '1' : '' };
第二步:在change事件中通过ID取值
当触发change事件时,拿到元素的ID后,直接用**对象[属性名]**的方式就能获取对应的值了,还能顺便更新对象里的状态(保证下次取值是最新的):
$('input[type="checkbox"]').on('change', function() { const triggerId = this.id; // 拿到触发元素的ID,比如"enabled" // 先更新对象里的对应状态(可选,但建议做,保证数据同步) checkboxStates[triggerId] = $(this).prop("checked") ? '1' : ''; // 直接通过ID获取对应的值 const currentValue = checkboxStates[triggerId]; console.log(`当前${triggerId}的状态值是:${currentValue}`); });
其他不推荐的方法(了解即可)
当然还有一些其他方式能实现,但不建议用:
- 用eval():
eval(triggerId)能直接取到变量,但eval会执行任意代码,如果ID是用户可控的,会有安全风险,完全不推荐。 - 用window全局对象:如果你的变量是全局的,
window[triggerId]也能取到,但全局变量容易造成命名污染,项目大了很难维护,也不建议。
所以还是用对象存储的方式最安全、最易维护,完美匹配你的需求~
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

