在任何地方单击时显示隐藏并正确重置状态
show hide on click anywhere and reset state properly
我有一个显示和隐藏一些文本的按钮。
<button id="test">
Show Toggle
</button>
<div id="invisible">
stuff to show
</div>
我使用 jQuery 来处理“#test”上的点击事件。
在 fadeIn 回调中,我绑定了 body click 事件以了解用户何时单击任何地方,在这种情况下我会隐藏文本。
我需要打开这个点击 "off",如果我不这样做,文本会出现并立即消失,因为事件仍然是绑定的。
$('#test').click(function() {
$('#invisible').fadeIn(500, function() {
$('body').on('click', function(e) {
$('#invisible').fadeOut();
$(this).off('click');
});
});
});
当我使用“.off”时,我真的只想取消绑定 'body' 上的这个非常具体的点击事件,而不是 'body' 上的所有点击事件 -> 但它会取消绑定!我有 body 上的点击事件。
$('body').on('click', function(e) {
$(this).off('click');
});
能够在按下按钮时显示文本然后在执行另一次按下(任意位置)时再次隐藏文本的最佳方法是什么? (这必须多次工作)
我准备了一个例子来说明我的问题(显示和隐藏一次后,'body' 上的第二个 onclick 事件不再触发):https://jsfiddle.net/x2q70dkm/1/
试试这个:
$(function() {
$('#test').click(function(e) {
e.stopPropagation();
$('#invisible').fadeToggle();
});
$('body').click(function () {
$('#invisible').fadeOut();
});
});
#invisible {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="test">
Show Toggle
</button>
<div id="invisible">
stuff to show
</div>
我有一个显示和隐藏一些文本的按钮。
<button id="test">
Show Toggle
</button>
<div id="invisible">
stuff to show
</div>
我使用 jQuery 来处理“#test”上的点击事件。 在 fadeIn 回调中,我绑定了 body click 事件以了解用户何时单击任何地方,在这种情况下我会隐藏文本。 我需要打开这个点击 "off",如果我不这样做,文本会出现并立即消失,因为事件仍然是绑定的。
$('#test').click(function() {
$('#invisible').fadeIn(500, function() {
$('body').on('click', function(e) {
$('#invisible').fadeOut();
$(this).off('click');
});
});
});
当我使用“.off”时,我真的只想取消绑定 'body' 上的这个非常具体的点击事件,而不是 'body' 上的所有点击事件 -> 但它会取消绑定!我有 body 上的点击事件。
$('body').on('click', function(e) {
$(this).off('click');
});
能够在按下按钮时显示文本然后在执行另一次按下(任意位置)时再次隐藏文本的最佳方法是什么? (这必须多次工作)
我准备了一个例子来说明我的问题(显示和隐藏一次后,'body' 上的第二个 onclick 事件不再触发):https://jsfiddle.net/x2q70dkm/1/
试试这个:
$(function() {
$('#test').click(function(e) {
e.stopPropagation();
$('#invisible').fadeToggle();
});
$('body').click(function () {
$('#invisible').fadeOut();
});
});
#invisible {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="test">
Show Toggle
</button>
<div id="invisible">
stuff to show
</div>