[英]jQuery - Clicking link fails because the containing element disappears beforehand
我正在为输入字段编写一个简单的建议框。 当我单击该字段时,该框下方会出现一个隐藏元素,其中包含一些与该字段内容匹配的链接。
当输入字段失去焦点时,建议框被编程为消失。
但是,当我尝试单击建议框中的任何链接时,输入字段首先失去焦点,导致包含所有链接的建议框消失,并且单击事件“未命中目标”。
我试图在这里演示这种行为: https : //jsfiddle.net/fugasjunior/cxh8bmp9/1/
<input placeholder="some text here">
<div class="hideme" style="display:none">
<a href="google.com" target="_blank">Link to some site</a>
</div>
$("input").focus(function () {
$(".hideme").css("display", "block");
});
$("input").blur(function () {
$(".hideme").css("display", "none");
});
我的临时解决方案是在隐藏元素之前设置一个小的超时时间。 但是,我认为这太不可靠了,总体而言不是理想的解决方案。 这个问题有没有更好的解决方案? 谢谢!
一种解决方案是捕获<div>
内链接的点击事件并将display
更改为none
。 例如:
$( "input" ).focus( function () {
$( ".hideme" ).css( "display", "block" );
} );
$( ".hideme a" ).click( function () {
$( ".hideme" ).css( "display", "none" );
} );
基本上, .hideme a
点击div
内的链接(即.hideme a
), <div>
就会隐藏。
然而,这可能不是理想的解决方案,因为它需要识别与隐藏<div>
相关的所有事件(即默认情况下单击页面上的其他地方不会隐藏<div>
)。 或者,可以将<input>
元素更改为捕获.click
以打开和关闭显示,以便用户还可以通过再次单击<input>
元素来重新隐藏<div>
。
抱歉,这可能无法完全回答原始问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.