当用户单击任何地方时,.container
需要淡出,但是不是当用户单击输入字段时。
除非单击输入字段,否则有没有办法将其淡出?
小提琴
$('.container').click(function () {
$(this).fadeOut();
});
<div class="container">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam eum ad adipisci velit assumenda cupiditate molestias facere officia neque maxime voluptatum officiis libero animi sit a accusamus culpa quasi quis!</p>
<input type="text" name="" id="" autofocus />
</div>
奖励点如果在较旧的浏览器上工作。
您需要将传播引入文本框。使用此:
$(".container input").click(function(e) {
e.stopPropagation();
})
工作演示
您可以使用 e.stoppropagation()以防止单击事件在输入获得焦点时浮动:
$('.container input').click(function (e) {
e.stopPropagation();
});
更新了小提琴
尝试此
$(".container input").click(function(event) {
event.stopPropagation();
})
其他答案使用stopPropagation
,但也可以与return false;
$('.container input').click(function() {
return false;
});
$('.container').click(function () {
$(this).fadeOut();
});
是的,有一种方法,请参见下面的演示。
$('.container').click(function (e) {
if ($(e.target).closest("input[type='text']").length === 0) {
$(this).fadeOut();
}
});
demo
哇..如此多的答案。...也尝试这个...只需使用 $(event.target)
即可查找body
元素上单击的内容,如果不是输入,则toggle
容器!!:)
解决方案小提琴
$('body').click(function(event) {
if($(event.target).is('#input'))
{}
else
{
$('.container').toggle(1200);
}
});
并将id
添加到<input type="text" name="" id="input" autofocus />
如果不是这样,请
if($(event.target).is('input'))
/* ^^ removed # tag from here*/
演示没有ID到输入元素
或
$('.container').not('input').click(function () {...});
有很多这样的帖子...