我有一些jQuery在点击时获取页面上元素的ID。我想使用该ID来选择在我的JS中使用哪个变量。
例如:
我点击ID为' a'的元素。 我有一个名为' a'的变量,我想将此变量用于DOM,因为用户点击了' a'元件。
答案 0 :(得分:3)
假设您的变量在全局范围内:
var a = "foobar",
b = "barfoo";
然后这应该有效:
$('#a, #b').on('click', function(){
console.log(window[this.id]); // "foobar" or "barfoo" when clicking #a or #b
});
您可以通过window
对象访问全局范围内的变量。
但是,似乎id
的元素被保存为寡妇对象的属性,因此包含所有变量的对象会更好:
var props = {a: 1, b: 2};
然后:
console.log(props[this.id]);
<强> Fiddle example 强>
答案 1 :(得分:1)
不要保留很多变量,而是保留一个哈希值 像这样
var hash = {}
现在,如果用户点击id为id ='a'的div 检查
hash['a']
答案 2 :(得分:0)
你必须做这样的事情
$('.someclass').click(function(){
var a = $(this).attr('id');
// Say you want to show some div with id say 'xyz_check1';
$('#xyz_'+a).show();
});
或者使用&#39; this.id&#39;
班级&#39; .someclass&#39;应该是你想要使用的所有元素的共同点。
<div class='someclass' id = "check1"></div>
<div class='someclass' id = "check12"></div>
答案 3 :(得分:0)
见Cerbrus&#39;通过window
对象访问全局变量的答案,以便更好地实现此目的。我不知道你可以通过这种方式访问全局变量 - 你每天都学到新东西!
我的原始答案如下:
// Replace the first line with selectors for each element you want to monitor the click event
$('#a, #b, #c').on('click', function() {
switch ( this.id ) {
case 'a':
// Do something with 'a' variable
break;
case 'b':
// Do something with 'b' variable
break;
// etc...
case default:
// Do something by default (if required)
break;
}
});
我更喜欢.on('click', function(){ ... });
到.click(function(){ ... });
,因为它允许支持可能已经动态添加到DOM编辑后的页面的任何元素。
答案 4 :(得分:-1)
让我们说,
$("div").click(function() {
var divId = this.id ; // this will return you the ID of the div
// divId will contain the variable you want to use
})