我想创建一个标志变量,其名称与单击的 div id 相同...(小提琴)
以下是我试图做的...... JQuery:
var $(this).attr(id)=12;
alert($(this).attr(id));
HTML:
<div id="abc">some text goes here</div>
但它没有工作请帮助......这是一个小提琴。
在小提琴中(看到的值var ccc
没有改变)
正确的形式是:
$(this).attr(id, "12")
并且在非 html5 上下文中分配一个数字作为 ID 可能会有问题。
但是,以某种方式使用 div 的值作为变量名的唯一方法是通过以下方式(而不是 window,您可以创建自定义 scoped var x={}
):
window[ $(this).attr(id)] = 12;
// or
window[ this.id ] = 12;
问题:您不知道值的名称,因此您总是必须以这种方式寻址变量。对于您的初始问题,可能有更好的解决方案......
如果您想将信息存储到特定的 html 元素,您最好使用该data()
方法。
$('#ccc').on('click',function(){
$(this).data("ccc",12);
alert( $(this).data("ccc") );
});
该值12
现在“直接存储在 html 元素上”。那是你想要的吗?
很清楚您要做什么,但根本不清楚您为什么要这样做。变量应该,嗯,变化......但他们的名字不应该。(实际上,这种情况出现的次数令人惊讶,所以我真的很想知道这样做的动力来自哪里。)
这不是变量名:
$(this).attr(id)
这是对$
函数的调用,它返回一个 jQuery 对象,然后是attr
对该对象的函数的调用,它返回一个值。(或者应该,取决于id
上下文中的内容。如果您的意思是相反,那么它应该返回匹配元素上属性'id'
的字符串值。)id
这应该有效,因为它应该提醒id
属性的字符串值:
alert($(this).attr(id));
但问题是,你想通过使用函数调用的返回值作为变量名来做什么?我知道 JavaScript 不是一种静态语言,但也不是那么动态的。
变量名必须是静态的,否则其他代码怎么知道如何使用它? 毫无疑问,有更好的结构来实现您想要实现的功能。
$('#ccc').on('click',function(){
window[this.id] = 12;
alert(window[this.id]);
});
您不必使用变量
两种方法
<div id="abc">some text goes here</div>
//mixing jquery and pure javascript
$('#ccc').on('click',function(){
alert(this.id);
});
//using only Jquery
$('#ccc').on('click',function(){
alert($(this).attr('id'));
});