Jquery: переменная как селектор идентификатора не работает - PullRequest
3 голосов
/ 26 апреля 2011

Хорошо, вот мой код:

$tabularID = 0;
$('a.swfselector').live('mouseover', function(event) {
            $tabularID= $(this).parent().attr('id');
            $(this).parent().children().not(this).find('.tab').each(function() {
                      $(this).fadeTo(100, 0.4)
            })
            $(this).find('.tab').each(function() {
                      $(this).fadeTo(100,1)
            })

    });
$('#' + $tabularID).live('mouseleave', function(event) {
            alert($tabularID);
            $(this).children().find('.tab').each(function() {
                      $(this).fadeTo(100,1)
            })

    });

Jquery не нравится этот селектор:

$('#' + $tabularID)

Хотя, если я поменяю его на:

$('#27')

Он просто предупреждает мою переменную $ tabularID, поэтому я знаю, что это не та переменная, которая является неправильной (Вывод $ tabularID равен 27). Мне нужна переменная здесь, потому что родительский идентификатор меняется в зависимости от того, при наведении мыши

Кто-нибудь может увидеть то, что я не могу? вероятно, действительно очевидно.

Ответы [ 3 ]

7 голосов
/ 26 апреля 2011

Ваш идентификатор должен начинаться с буквы a-z или A-Z.

Этот код $ ('#' + $ tabularID) затрагивает только при первом запуске. Это означает, что ваш $ tabularID = 0.

При наведении указателя мыши обновляется только значение $ tabularID, но оно не обновляет привязку к событию этого объекта $ ('#' + $ tabularID)

Я думаю, вы можете изменить свой код следующим образом:

$tabularID = 0;
$('a.swfselector').live('mouseover', function(event) {
            $tabularID= $(this).parent().attr('id');
            $(this).parent().children().not(this).find('.tab').each(function() {
                      $(this).fadeTo(100, 0.4)
            })
            $(this).find('.tab').each(function() {
                      $(this).fadeTo(100,1)
            })

            $('#' + $tabularID).live('mouseleave', function(event) {
                alert($tabularID);
                $(this).children().find('.tab').each(function() {
                      $(this).fadeTo(100,1)
                })

            });

    });
2 голосов
/ 26 апреля 2011

Я часто использую переменные в селекторах. И у меня все работает нормально. Просто избегайте использования идентификаторов, таких как «123». Правила именования ID:

  • Должен начинаться с буквы A-Z или a-z
  • Может сопровождаться: буквами (A-Za-z), цифрами (0-9), дефисами ("-"), символами подчеркивания ("_"), двоеточиями (":") и точками (". «)
  • Значения чувствительны к регистру
0 голосов
/ 14 сентября 2013

Я также сталкивался с этой проблемой с jQuery, но обнаружил, что обычный JavaScript DOM может обрабатывать идентификаторы, которые начинаются с цифр, если это проблема. Это может помочь в этом случае, но, возможно, стоит взглянуть, проще ли изменить этот фрагмент кода, чем изменять настройку идентификаторов.

document.getElementById(tabularID)

Обратите внимание, что вам не нужно '#' в начале.

Дополнительная информация о document.getElementById

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...