我有一个简单的范围界定问题让我望而却步。
这是一个更简单的代码版本,但使用相同的原则。
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类型的东西,但我还没有找到一个直截了当的答案。
谢谢你看看这个!批评公开表示赞赏。
答案 0 :(得分:5)
您的HTML可能是这样的:
<div class='selector_1'>HELLO</div>
<div class='selector_2'><span>HI THERE</span></div>
所以当你点击第二个时,你得到的是未定义的,因为目标是跨度而不是选择器。
答案 1 :(得分: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);
}
}