检索本身包含变量的 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 我有一个 link 喜欢 :
<a href="#" class="delete" data-request-id="2" title="delete">Delete</a>
data-request-id 参数给我一个数字,你在我的变量名中得到的那些在上面。在我的示例中,它是 data-request-id="2" : files_2.
接下来,我有一个 Jquery 函数可以从 links 中捕获数据值:
$('.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 获取它们,但它不起作用。
有什么想法吗?
如果您在全局范围内定义了变量,它们将附加到 window
对象。所以你应该能够通过在 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>
- 它的工作方式与 window:
非常相似
<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
部分的字符串连接可能不同,但逻辑不变。
在我的 Jquery 顶部,我有许多变量(与值相关联)称为:files_1、files_2 等
它们是在我页面底部的脚本中创建的:
<script>
$(function () {
<?php foreach ($folders as $f) { ?>
var files_<?=$f['request_id']?> = 0;
<?php } ?>
…
});
</script>
在我的 html 我有一个 link 喜欢 :
<a href="#" class="delete" data-request-id="2" title="delete">Delete</a>
data-request-id 参数给我一个数字,你在我的变量名中得到的那些在上面。在我的示例中,它是 data-request-id="2" : files_2.
接下来,我有一个 Jquery 函数可以从 links 中捕获数据值:
$('.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 获取它们,但它不起作用。
有什么想法吗?
如果您在全局范围内定义了变量,它们将附加到 window
对象。所以你应该能够通过在 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>
- 它的工作方式与 window:
<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
部分的字符串连接可能不同,但逻辑不变。