jQuery - 根据被点击元素的ID选择变量

3

我可能忽略了更明显的方法来实现我想要的功能,但是...

我有一个JS变量列表,其中的变量名称与页面上一些元素的ID相同。当我点击其中一个元素时,我希望能够使用点击元素的ID来确定应在我的函数中使用哪个变量。我的变量名称对应于我的元素ID,必须有某种方法可以通过$(this).id获取被点击元素的ID值,然后找到与该字符串匹配的变量?请注意,变量的内容与变量名称或元素ID完全无关 - 变量在页面加载时设置,我希望避免每次运行函数时都设置它们!我知道我可能可以使用onclick来实现这一点,但我试图避免这样做,因为显然它现在已经不那么好用了?!

谢谢!


你是将这个“列表”存储为一个对象,以便可以通过键查找值吗?尝试展示一些代码。 - Evan Davis
4个回答

2
我建议您创建一个包含所有ID名称的数组。
thisArray = {
    uniqueID1: 'Your value for uniqueID1',
    uniqueID2: 'Your value for uniqueID2'
};

你可以通过类名来调用元素,例如:

HTML:

<div id="uniqueID1" class="elements_class"> Div Content </div>
<div id="uniqueID2" class="elements_class"> Div Content </div>

jQuery:

$('div.elements_class').click(function(){
    var now_id = $(this).attr('id');
    alert(thisArray[now_id]);
});

Array不应该有索引名称... - Derek 朕會功夫
1
使用对象而不是数组。 http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/ - Derek 朕會功夫
1
你应该使用Object()而不是Array()。 - Cezary Wojcik
就像那样?只需将Array()替换为Object()就可以了吗? - Memolition
@Memolition - 你可以这么说。它们很相似。 - Derek 朕會功夫
@Derek朕会功夫 虽然你建议使用“Object”,但是“Array”也是“Object” :) - Ja͢ck

1
似乎你想要使用 .data(),它可以帮助你实现该功能。
$(el).data('myobject', {
    x: 123,
    y: 456
});

然后进行检索:
$(el).on('click', function() {
    var obj = $(this).data('myobject');
});

0
你有没有考虑把它们存储在一个对象中?
示例:
var obj = {
   'id1' : value1,
   'id2' : value 2,
   //...
}

然后你可以像这样访问它们

obj[this.id]

$(this).attr('id') 基本上相当于 this.id :) - Ja͢ck
可能吧,我其实从来没有用过它。感谢提供信息,我会更新我的回答! - Karl-André Gagnon

0
如果你使用一个对象来存储带有键值对的变量,你只需要调用variableObject[this.id]就可以获取该变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接