Javascript Can';使用onclick无法获得正确的$(this)元素。尝试使用:不用于div内的输入
这是一个很难写的标题,有很好的解释 我得到了以下html:Javascript Can';使用onclick无法获得正确的$(this)元素。尝试使用:不用于div内的输入,javascript,jquery,html,Javascript,Jquery,Html,这是一个很难写的标题,有很好的解释 我得到了以下html: <div class="requestItem clearfix"> <div class="col-sm-2">Great info goes here yo.</div> <div class="col-sm-2">Some info goes here</div> <div class="col-sm-2">Date
<div class="requestItem clearfix">
<div class="col-sm-2">Great info goes here yo.</div>
<div class="col-sm-2">Some info goes here</div>
<div class="col-sm-2">Date goes here.</div>
<div class="col-sm-1 pull-right">
<div class="buttons">
<div class="row">
<input type="button" value="Edit" class="btn dark-button tiny-button" />
<input type="button" value="Delete" class="btn dark-button tiny-button margin-top" />
</div>
</div>
</div>
<div class="row extraInfo">
<div class="col-sm-12">
some random info
</div>
</div>
</div>
应该发生什么:当我单击元素输入的按钮之一时,不应该发生切换
发生的情况:$(this)始终是父div requestItem。我知道这可能是一个正常的问题,因为requestItem被包裹在按钮周围,但是,我需要知道按钮是否被单击,因为我不想切换幻灯片
提前谢谢
帮助后:这就是我的结局:
希望它也能帮助别人
$('.requestItem').click(function (e) {
if (!$(e.target).is(':input')) {
$(this).children('.extraInfo').slideToggle();
}
});
您应该使用
event.target
工作区:
基本上,由于您的侦听器位于包含元素
div.requestitem
上,因此这就是回调函数的this
上下文。您对输入的单击事件会冒泡到包含元素(您正在侦听的元素)。请记住,此
将始终设置为与选择器匹配的元素。您应该使用事件。目标
工作区:
基本上,由于您的侦听器位于包含元素
div.requestitem
上,因此这就是回调函数的this
上下文。您对输入的单击事件会冒泡到包含元素(您正在侦听的元素)。请记住,此
将始终设置为与选择器匹配的元素。默认情况下,此
在jQuery单击处理程序中返回的是它绑定到的元素(在本例中,.requestItem
)。要获取单击的元素,请使用e.target
:
$('.requestItem').click(function (e) {
console.log($(e.target));
if ($(e.target).is('input')) {
alert("input clicked"); return;
} else { $(this).children('.extraInfo').slideToggle(); }
});
Fiddle:默认情况下,
在jQuery单击处理程序中,此
返回的是它绑定到的元素(在本例中,.requestItem
)。要获取单击的元素,请使用e.target
:
$('.requestItem').click(function (e) {
console.log($(e.target));
if ($(e.target).is('input')) {
alert("input clicked"); return;
} else { $(this).children('.extraInfo').slideToggle(); }
});
小提琴:
$(此)
是您分配给事件的元素。使用$(event.target)
获取实际单击的元素。$(this)
是您分配给事件的元素。使用$(event.target)
获取实际单击的元素。在幻灯片切换上,您仍需要使用$(this)
。.target
仅需要在比较中使用。否则,干得好!接得好,修好了。另一个答案更可靠,不会让你的答案错了或没有帮助+1现在已经修好了!在幻灯片切换中,您仍然需要使用$(this)
。.target
仅需要在比较中使用。否则,干得好!接得好,修好了。另一个答案更可靠,不会让你的答案错了或没有帮助+1现在已经修好了!