我想创建一个标志变量,其名称与点击的div id相同......(fiddle)
以下是我试图做的...... JQuery的:
var $(this).attr(id)=12;
alert($(this).attr(id));
HTML:
<div id="abc">some text goes here</div>
但它没有用,请帮助......这里是fiddle。
小提琴(见var ccc
的值不变)
答案 0 :(得分:1)
正确的形式是:
$(this).attr(id, "12")
在非html5上下文中,将数字指定为ID可能会有问题。
但是,以某种方式使用div的值作为变量名的唯一方法是使用以下方式(而不是窗口,您可以创建自定义范围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元素上”。那是你想要的吗?
答案 1 :(得分:1)
有点明确你正在尝试做什么,但它根本不清楚为什么你正在努力做到这一点。变量应该变化......但是它们的名称不应该。 (实际上,这实际上出现了惊人的次数,所以我真的很想知道这样做的动力来自哪里。)
这不是变量名称:
$(this).attr(id)
它是对$
函数的调用,它返回一个jQuery对象,然后调用该对象上的attr
函数,该函数返回一个值。 (或者应该,取决于id
在此上下文中的内容。如果您的意思是'id'
,那么它应该返回匹配元素上id
属性的字符串值。)
这应该有效,因为它应该警告id
属性的字符串值:
alert($(this).attr(id));
但问题是,通过使用函数调用的返回值作为变量名,你尝试做什么?我知道JavaScript不是一种静态语言,但它不是那动态。
变量 name 必须是静态的,否则其他任何代码如何知道如何使用它?毫无疑问,有一个更好的结构来实现你的功能期待实现。
答案 2 :(得分:0)
$('#ccc').on('click',function(){
window[this.id] = 12;
alert(window[this.id]);
});
答案 3 :(得分:-2)
您不必使用变量
两种方法
<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'));
});