Javascript Jquery div以正确打开/关闭隐藏div
我已经创建了一些代码,当单击一个div(“按钮”)时,它将隐藏/取消隐藏一个隐藏的div。我还希望在单击屏幕上的任何位置时隐藏div。这些代码似乎相互冲突Javascript Jquery div以正确打开/关闭隐藏div,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我已经创建了一些代码,当单击一个div(“按钮”)时,它将隐藏/取消隐藏一个隐藏的div。我还希望在单击屏幕上的任何位置时隐藏div。这些代码似乎相互冲突 $(document).ready(function () { $(document).on("click", "#help-icon", function () { console.log('hi'); $("#help-menu").toggle(); }); $(documen
$(document).ready(function () {
$(document).on("click", "#help-icon", function () {
console.log('hi');
$("#help-menu").toggle();
});
$(document).mouseup(function (e) {
var hlpcont = $("#help-menu");
if (!hlpcont.is(e.target) &&
hlpcont.has(e.target).length === 0) {
hlpcont.hide();
}
});
});
jsfiddle:
编辑:如果要单击显示的div而不再次隐藏它:
$(document).click(function(eventObj)
{
if (eventObj.target.id == "help-icon") {
$("#help-menu").toggle();
} else if($(eventObj.target).hasClass("help-dropdown")) {
$("#help-menu").show();
} else {
$("#help-menu").hide();
}
});
在我的测试中,mouseup函数在click函数之前激发。mouseup函数检查事件的目标。单击按钮时,mouseup事件的目标是按钮,因此mouseup函数隐藏div,然后单击函数激发并将div切换回可见状态 我要做的是在mouseup中检查事件的目标并跳过click事件:
$(document).mouseup(function (e)
{
var hlpcont = $("#help-menu");
var hlpIcon = $("#help-icon");
if(hlpIcon.is(e.target)){
hlpcont.toggle();
}else
{
hlpcont.hide();
}
});
你忘了把HTML放在小提琴里。那么,问题出在哪里?JSFIDLE对我来说似乎工作得很好。我点击按钮,它会打开div,我点击任何地方(但div本身和按钮除外),它会关闭。这实际上会关闭div,如果在itI内部点击,它会显示。我编辑了我的回复,以包括一个案例,如果在其中点击,你不希望出现的div消失
$(document).mouseup(function (e)
{
var hlpcont = $("#help-menu");
var hlpIcon = $("#help-icon");
if(hlpIcon.is(e.target)){
hlpcont.toggle();
}else
{
hlpcont.hide();
}
});