2011-12-21 5 views
1

У меня есть простая проблема, которая ускользает от меня.Проблема с переменной переменной Javascript

Вот более простая версия кода, но использует тот же принцип.

function myFunction(){ 
    $('.selector_1, .selector_2').click(function(e){ 
    var $trgt = $(e.target); 
    var myVAR; 

    if ($trgt.is('.selector_1')){ 
     myVAR = 'selector_1'; 
    } 

    if ($trgt.is('.selector_2')){ 
     myVAR = 'selector_2'; 
    } 
    console.log(myVAR); 
    } 
} 

Этот вопрос, если пользователь нажать на selector_1myVAR бы получить заселена успешно каждый раз, однако, второй целевой обработчик будет всегда возвращать myVAR как неопределенные.

Я предполагаю, что это тип программирования типа 101, однако мне еще предстоит найти прямой ответ.

Спасибо, что посмотрели на это! Критика открыто оценивалась.

+1

работает здесь: http://jsfiddle.net/xaGpW/ – georg

+2

Пожалуйста, ваши разметки! – Mathletics

ответ

5

Ваш HTML, вероятно, что-то вроде этого:

<div class='selector_1'>HELLO</div> 

<div class='selector_2'><span>HI THERE</span></div> 

Итак, когда вы нажимаете на второй вы получите неопределенными bacause цель пролет и не селектор ,

Fiddle демо: http://jsfiddle.net/maniator/M6fYf/

+0

+1 - красиво сделано –

+0

@AdamRackis thanky^_^Я просто добавил некоторые css fanciness :-D – Neal

+0

Объединяя решение Адама Ракиса и Нила, вы получите следующее: http://jsfiddle.net/M6fYf/4/ Что работает , ;) – nybbler

2

Этот код следует работа. Может быть e.target не ведет себя правильно для некоторых типов элементов ??? Вместо e.target, попробуйте использовать this

function myFunction(){ 
    $('.selector_1, .selector_2').click(function(e){ 
    var $trgt = $(this); 
    var myVAR; 

    if ($trgt.is('.selector_1')){ 
     myVAR = 'selector_1'; 
    } 

    if ($trgt.is('.selector_2')){ 
     myVAR = 'selector_2'; 
    } 
    console.log(myVAR); 
    } 
} 
+1

@nybbler - я изначально продолжал выбирать $ (this) снова и снова - я изменил его, чтобы сохранить переменную OPs $ trgt, но установил ее в $ (this) - тот же эффект, но без повторного выбора $ (this) over и более –

Смежные вопросы