将jquery变量名设置为DIV id name

时间:2013-06-30 10:56:22

标签: jquery html

我想创建一个标志变量,其名称与点击的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的值不变)

4 个答案:

答案 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'));
});