У меня есть jQuery, который получает идентификатор элемента на странице при нажатии. Я хочу использовать этот идентификатор, чтобы выбрать, какую переменную использовать в моей JS.
Например:
Я нажимаю на элемент с идентификатором 'a'. У меня есть переменная с именем "a", я хочу использовать эту переменную для DOM, потому что пользователь щелкнул элемент "a".
Предполагая, что у вас есть переменные в глобальной области:
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
сохраняются как свойства объекта widow, поэтому объект, содержащий все ваши переменные, будет лучше:
var props = {a: 1, b: 2};
Затем:
console.log(props[this.id]);
console.log(this.id)
и console.log(a , b)
, в этом обработчике кликов? Кажется, что переменные не находятся в глобальной области видимости
Вместо того, чтобы хранить много переменных, сохраняйте один хэш
как это
var hash = {}
теперь, если пользователь нажимает div с id = 'a'
проверить
hash['a']
Вы должны сделать что-то подобное
$('.someclass').click(function(){
var a = $(this).attr('id');
// Say you want to show some div with id say 'xyz_check1';
$('#xyz_'+a).show();
});
Или используйте 'this.id'
Класс.someclass должен быть общим для всех элементов, которые вы хотите использовать.
<div class='someclass' id = "check1"></div>
<div class='someclass' id = "check12"></div>
$(this).attr('id');
? Используйте this.id
Кроме того, "токены ID и NAME должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов (" - "), подчеркиваний (" "), двоеточия (": ") и точки (". ")." _
См. Ответ Cerbrus для доступа к глобальным переменным через 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(){... });
to .click(function(){... });
так как он позволяет поддерживать любой элемент, который может быть динамически добавлен в компиляцию DOM страницы post.
$(this).attr(id)
вместо простого использования this.id
, и вы this.id
id
-> ссылки на переменные.
this.id
, и на этот вопрос не было ответов, когда я начал печатать свой ответ ... Почему понизилось?
скажем,
$("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
})