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问题是,如果用户每次单击都会成功填充,但是,第二个目标处理程序将始终返回myVAR未定义。

我假设这是一个编程 101 类型的东西,但是我还没有找到一个简单的答案。

谢谢你看看这个!批评公开赞赏。

4

2 回答 2

5

您的 html 可能是这样的:

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

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

因此,当您单击第二个时,您会得到未定义的结果,因为目标是跨度而不是选择器。

小提琴演示: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 回答