检索本身包含变量的 Jquery 变量名的值
Retrieve value of a Jquery variable name containing a variable in itself
在我的Jquery顶部,我有很多变量(与值相关联),称为:files_1,files_2等。
它们是在我的页面底部的脚本中创建的:
<script>
$(function () {
<?php foreach ($folders as $f) { ?>
var files_<?=$f['request_id']?> = 0;
<?php } ?>
…
});
</script>
在我的 html 中,我有一个链接,例如:
<a href="#" class="delete" data-request-id="2" title="delete">Delete</a>
data-request-id 参数给了我一个数字,你在我的变量名称中得到的数字在顶部。在我的示例中,它是 data-request-id="2" : files_2。
接下来,我有一个 Jquery 函数,可以从链接中捕获数据值:
$('.request-files').on('click', 'a.delete', function (e) {
e.preventDefault();
var $link = $(this);
var $id = $link.data('request-id');
console.log(files_$id); // <-- It doesn't work
});
我需要做的是检索files_x变量的值。在我的示例中,我尝试使用 files_$id 获取它们,但它不起作用。
知道吗?
如果在全局 scrope 中定义了变量,则它们将附加到 window
对象。因此,您应该能够通过在窗口对象上使用括号表示法来访问变量:
$('.request-files').on('click', 'a.delete', function (e) {
e.preventDefault();
var $link = $(this);
var $id = $link.data('request-id');
console.log(window['files_' + $id]); // <-- It DOES work
});
UPD:您的变量位于 document.ready 函数 ( $(function() {...});
的闭包中,因此您将无法从其他作用域访问它们。我假设您的点击处理程序也在该闭包中。我可以建议创建一个具有名为 file_<ID>
的属性的单独对象 - 它的工作方式与窗口非常相似:
<script>
$(function () {
var filesMap = {};
<?php foreach ($folders as $f) { ?>
filesMap['files_' + <?=$f['request_id']?>] = 0;
<?php } ?>
…
$('.request-files').on('click', 'a.delete', function (e) {
e.preventDefault();
var $link = $(this);
var $id = $link.data('request-id');
console.log(filesMap['files_' + $id]);
});
});
</script>
我不熟悉 PHP,所以request_id
部分的字符串连接可能不同,但逻辑仍然存在。
相关文章:
- AngularJS-在JSON选择器中使用变量名
- 如何使用jQuery循环变量名
- 检索本身包含变量的 Jquery 变量名的值
- 动态jQuery变量名
- jquery没有't从DIV数据id中获取PHP变量值,只输出变量名
- Ajax jquery post发布时没有变量名
- 在jquery data()对象上循环,并将值写入以键为变量名的变量中
- JQuery组合变量名
- jQuery从变量名检查类
- JS - 运行带有变量名的 jQuery 函数
- 如何将变量名转换为对象jQuery的索引字符串
- $issue作为前缀jquery变量名
- jQuery在for循环中动态递增变量名
- 在jquery中使用增量变量名从json中获取值
- 将字符串转换为要在jQuery.animate中使用的变量名
- Jquery selectbox删除所有选项,除了两个(选择器变量名)
- 我们可以在html中有变量名,jQuery
- Jquery显示变量名而不是值
- 基于变量名调用jQuery自动完成小部件函数
- 使用jquery从select元素中选择变量名