Javascript 由于“显示”属性,自定义选择器不会单击

Javascript 由于“显示”属性,自定义选择器不会单击,javascript,jquery,Javascript,Jquery,因此,我制作了一个自定义选择器,如 <div class="search"> <input class="custom-selector" type="text" autocomplete="off" > <ul class="custom-options hidden"> <li>New York</li>

因此,我制作了一个自定义选择器,如

<div class="search">
                <input class="custom-selector" type="text" autocomplete="off" >
                <ul class="custom-options hidden">
                    <li>New York</li>
                    <li>Moscow</li>
                    <li>Baku</li>
                </ul>
            </div>

在下一步中,我需要一个函数来onclick获取li值并将其复制到输入,但每当我单击li时,输入就会失去焦点,onclick函数无法在显示无上工作,我发现的一个解决方案是不透明度0,而不是隐藏类的显示无,有没有更理想、更正确的方法来解决此问题?

编辑:您可以添加一个
超时时间

$('.custom selector').focus(函数(){
$(“.custom options”).removeClass(“隐藏”);
}).blur(函数(){
setTimeout(函数(){$(“.custom options”).addClass(“hidden”)},350);
})
$('.custom options>li')。单击(函数(e){
$('.custom selector').val($(this.text());
});
。隐藏{
显示:无;
}

  • 纽约
  • 莫斯科
  • 巴库

编辑:您可以添加一个
超时
也许

$('.custom selector').focus(函数(){
$(“.custom options”).removeClass(“隐藏”);
}).blur(函数(){
setTimeout(函数(){$(“.custom options”).addClass(“hidden”)},350);
})
$('.custom options>li')。单击(函数(e){
$('.custom selector').val($(this.text());
});
。隐藏{
显示:无;
}

  • 纽约
  • 莫斯科
  • 巴库

您可以在pseudo类中使用focusable元素和:focus的组合,以避免失去焦点

$('.自定义选项a')。单击(功能(ev){
const selected=ev.target.textContent;
$('.custom selector').val(选中);
ev.target.blur();
});
。自定义选项{
显示:无;
}
.search:焦点在.custom选项中{
显示:块;
}
.自定义选项a{
文字装饰:无;
颜色:继承;
}


您可以在pseudo类中使用focusable元素和:focus的组合,以避免失去焦点

$('.自定义选项a')。单击(功能(ev){
const selected=ev.target.textContent;
$('.custom selector').val(选中);
ev.target.blur();
});
。自定义选项{
显示:无;
}
.search:焦点在.custom选项中{
显示:块;
}
.自定义选项a{
文字装饰:无;
颜色:继承;
}


尝试将
的css.hidden{display:none;}
添加到您的代码中,并查看输出。这可以做到,但使用了大约300ms+和100,有时它没有注册单击,谢谢!尝试将
.hidden{display:none;}
的css添加到您的代码中,并查看输出。这可以做到,但大约需要300毫秒+和100秒,有时它没有注册单击,谢谢!
$('.custom-selector').focus(function() {
    $(".custom-options").removeClass("hidden");
}).blur(function() {
    $(".custom-options").addClass("hidden");
})