为什么jQuery有时会检测到点击,有时候不会?
我有一个ipython3 kernelspec install-self
元素,点击后会显示#options
。当用户点击#dropdown-menu
之外的任何位置时(#dropdown-menu
元素除外),下拉列表将被隐藏。这是我的代码,大部分时间都有效,有时它不会:
#options
我无法弄清楚它为什么间歇性地工作。很难接受有时只能工作的代码。我注意到jQuery( document ).ready( function() {
jQuery('#options').click( function(){
jQuery('#dropdown-menu').slideDown();
});
jQuery(document).click( function(event) {
if( !jQuery(event.target).closest('#dropdown-menu').length && !jQuery(event.target).is('#options') ) {
if(jQuery('#dropdown-menu').is(":visible")) {
jQuery('#dropdown-menu').hide();
}
}
});
});
以空字符串的形式返回...这是jQuery的错误吗?
编辑:
以下是fiddle,无法复制错误。
答案 0 :(得分:0)
好的,我找到了解决问题的方法。警告:这很愚蠢!
问题是#options
的内容,我使用FontAwesome中的图标来表示'选项',如下所示:
<div id="options"><i class="fa fa-ellipsis-v"></i></div>
我删除了<i class="fa fa-ellipsis-v"></i>
内容并使用CSS添加了内容,现在它可以正常运行。我不确定为什么,但确实如此;我的猜测是,当我点击<i>
标签时jQuery感到困惑,即使它与#options
相符。
添加FontAwesome图标的CSS代码:
#options:before {
content: "\f142";
font-family: FontAwesome;
}
(感谢大家的意见,帮助我解决这个问题。我很感激!)