Проблема области видимости переменной Javascript - PullRequest
1 голос
/ 21 декабря 2011

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

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

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_1 myVAR, то каждый раз будет успешно заполняться, однако второй обработчик цели всегда будет возвращать myVAR как неопределенное.

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

Спасибо, что взглянули на это!Критика открыто ценится.

Ответы [ 2 ]

5 голосов
/ 21 декабря 2011

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

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

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

Поэтому, когда вы нажимаете на второй, вы получаете неопределенное значение, потому что целью является диапазон, а не селектор.

Демонстрация скрипки: http://jsfiddle.net/maniator/M6fYf/

2 голосов
/ 21 декабря 2011

Этот код должен работать. Может быть, 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);
  }
}
...