为什么jQuery间歇性地无法检测到点击?

时间:2016-01-07 15:16:13

标签: javascript jquery html

为什么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,无法复制错误。

1 个答案:

答案 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;
}

(感谢大家的意见,帮助我解决这个问题。我很感激!)