1

私を逃している単純なスコープの問題があります。

これはコードの単純なバージョンですが、同じ原則を採用しています。

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と毎回正常に入力される場合、2 番目のターゲット ハンドラーは常にmyVAR未定義として返されることです。

これはプログラミングの 101 タイプのものだと思いますが、まだ簡単な答えを見つけていません。

これを見てくれてありがとう!批判は公然と認められます。

4

2 に答える 2

5

あなたのhtmlはおそらく次のようなものです:

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

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

したがって、2 番目のものをクリックすると、ターゲットがセレクターではなくスパンであるため、未定義になります。

フィドルのデモ: http://jsfiddle.net/maniator/M6fYf/

于 2011-12-21T17:58:34.563 に答える
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);
  }
}
于 2011-12-21T17:54:13.050 に答える