Используйте определенный идентификатор div для выбора переменной

0

У меня есть jQuery, который получает идентификатор элемента на странице при нажатии. Я хочу использовать этот идентификатор, чтобы выбрать, какую переменную использовать в моей JS.

Например:

Я нажимаю на элемент с идентификатором 'a'. У меня есть переменная с именем "a", я хочу использовать эту переменную для DOM, потому что пользователь щелкнул элемент "a".

  • 3
    Пожалуйста, покажите нам свой код
  • 1
    вы не можете получить доступ к имени динамической переменной, как это, если оно не находится в глобальной области видимости (потому что тогда это будет свойство объекта окна - не рекомендую его) ... вместо этого, если это свойства объекта, вы можете используйте обозначение в скобках
Показать ещё 1 комментарий
Теги:

5 ответов

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 сохраняются как свойства объекта widow, поэтому объект, содержащий все ваши переменные, будет лучше:

var props = {a: 1, b: 2};

Затем:

console.log(props[this.id]);

Пример скрипта

  • 2
    Это в настоящее время просто возвращается неопределенным? Идентификатор и имена переменных, безусловно, правильные.
  • 0
    Вы можете console.log(this.id) и console.log(a , b) , в этом обработчике кликов? Кажется, что переменные не находятся в глобальной области видимости
Показать ещё 11 комментариев
1

Вместо того, чтобы хранить много переменных, сохраняйте один хэш
как это

var hash = {}

теперь, если пользователь нажимает div с id = 'a'
проверить

hash['a']
0

Вы должны сделать что-то подобное

     $('.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>
  • 2
    $(this).attr('id'); ? Используйте this.id Кроме того, "токены ID и NAME должны начинаться с буквы ([A-Za-z]) и могут сопровождаться любым количеством букв, цифр ([0-9]), дефисов (" - "), подчеркиваний (" "), двоеточия (": ") и точки (". ")." _
  • 0
    Правильно. Я давал ему представление о том, как он может решить эту проблему.
Показать ещё 2 комментария
0

См. Ответ 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.

  • 0
    Да, это именно то, что я уже ответил, за исключением того, что вы используете $(this).attr(id) вместо простого использования this.id , и вы this.id id -> ссылки на переменные.
  • 0
    Я перешел на this.id , и на этот вопрос не было ответов, когда я начал печатать свой ответ ... Почему понизилось?
Показать ещё 3 комментария
-2

скажем,

$("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
})
  • 0
    При нажатии на элемент div вы получаете идентификатор элемента div, а затем ищете элемент с этим идентификатором? Вы имеете в виду div?
  • 0
    Извините .. неправильно понял, он хотел использовать ту переменную, которая в данном случае является divId

Ещё вопросы

Сообщество Overcoder
Наверх
Меню