-3

我想创建一个标志变量,其名称与单击的 div id 相同...(小提琴

以下是我试图做的...... JQuery:

var $(this).attr(id)=12;
alert($(this).attr(id));

HTML:

<div id="abc">some text goes here</div>

但它没有工作请帮助......这是一个小提琴

在小提琴中(看到的值var ccc没有改变)

4

4 回答 4

1

正确的形式是:

$(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 元素上”。那是你想要的吗?

于 2013-06-30T10:59:05.393 回答
1

很清楚要做什么,但根本不清楚您为什么要这样做。变量应该,嗯,变化......但他们的名字不应该。(实际上,这种情况出现的次数令人惊讶,所以我真的很想知道这样做的动力来自哪里。)

这不是变量名:

$(this).attr(id)

这是对$函数的调用,它返回一个 jQuery 对象,然后是attr对该对象的函数的调用,它返回一个值。(或者应该,取决于id上下文中的内容。如果您的意思是相反,那么它应该返回匹配元素上属性'id'的字符串值。)id

这应该有效,因为它应该提醒id属性的字符串值:

alert($(this).attr(id));

但问题是,你通过使用函数调用的返回值作为变量名来做什么?我知道 JavaScript 不是一种静态语言,但也不是那么动态的。

变量必须是静态的,否则其他代码怎么知道如何使用它? 毫无疑问,有更好的结构来实现您想要实现的功能。

于 2013-06-30T11:01:35.337 回答
0
$('#ccc').on('click',function(){
   window[this.id] = 12;
    alert(window[this.id]);
});
于 2013-06-30T10:59:34.127 回答
-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'));
});
于 2013-06-30T11:05:03.550 回答