JQuery Toggle 在第一次单击时有效,但不再有效(如预期)
我正在创建一个 div,通过单击另一个元素来显示(切换)。
当我单击锚点(#toggle-contents
)时,它应该显示;如果我单击同一个锚点或文档中的其他位置,它应该隐藏。
我正在遵循此操作方法中的代码: 创意叠加/popup 与 jQuery。
它目前正在第一次被点击时工作,但不久之后它就会显示和隐藏。
标记:
<div id="block-header">
<a id="trigger-contents">Toggle</a>
</div>
<div id="block-contents">
</div>
javascript:
function registerToggleDiv( trigger, toggle )
{
$( '#' + trigger ).click(function()
{
$( '#' + toggle ).toggle(function()
{
console.log('toggle');
$(document).click(function(event)
{
if ( !($(event.target).is('#' + toggle ) ||
$(event.target).parents('#' + toggle ).length ||
$(event.target).is( '#' + trigger )))
{
console.log('toggle hide');
$('#' + toggle ).hide(500);
}
});
});
});
}
registerToggleDiv( 'trigger-contents', 'block-contents' );
我试图找到与这里的其他切换问题相比的错误,但没有找到任何提示。
感谢您的任何提示!
I'm creating a div which is shown(toggled) by clicking on another element.
It should be shown when i click an anchor(#toggle-contents
) and hidden if i click on the same anchor or somewhere else in the document.
I'm following the code in this how-to: Creative overlay/popup with jQuery.
It is currently working for the first time it's clicked, - but then it gets displayed and hidden shortly afterwards.
The markup:
<div id="block-header">
<a id="trigger-contents">Toggle</a>
</div>
<div id="block-contents">
</div>
The javascript:
function registerToggleDiv( trigger, toggle )
{
$( '#' + trigger ).click(function()
{
$( '#' + toggle ).toggle(function()
{
console.log('toggle');
$(document).click(function(event)
{
if ( !($(event.target).is('#' + toggle ) ||
$(event.target).parents('#' + toggle ).length ||
$(event.target).is( '#' + trigger )))
{
console.log('toggle hide');
$('#' + toggle ).hide(500);
}
});
});
});
}
registerToggleDiv( 'trigger-contents', 'block-contents' );
I tried to find to error comparing to other toggle-questions here but didn't find any hint.
Thank you for any hints!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您点击
trigger
时,就会发生传播并且文档onclick
将会触发。您正在绑定到文档
onclick
事件:您应该停止在单击的元素中传播以防止文档单击,如下所示:
When you click on
trigger
, propagation will happen and documentonclick
will fire.You are binding to document
onclick
event :you should stop propagation in clicked element to prevent document click as below :