Javascript 如何在DIV控件之外处理DIV上的onClick?
我有一个id为settingsDiv的DIV和几个组合框,如果我点击窗口中的某个地方,我喜欢关闭窗口,当然除了一个组合框。 我使用以下html代码:Javascript 如何在DIV控件之外处理DIV上的onClick?,javascript,jquery,html,Javascript,Jquery,Html,我有一个id为settingsDiv的DIV和几个组合框,如果我点击窗口中的某个地方,我喜欢关闭窗口,当然除了一个组合框。 我使用以下html代码: <div id="settingsDiv" onClick="javascript:closeSettings()"> <form id="settings"> Font size: <select id="fontSizeFactor" size="1"> <option value="2.0
<div id="settingsDiv" onClick="javascript:closeSettings()">
<form id="settings">
Font size:
<select id="fontSizeFactor" size="1">
<option value="2.0">200%</option>
<option value="1.75">175%</option>
<option value="1.5">150%</option>
<option value="1.25">125%</option>
<option selected value="1.0">100%</option>
<option value="0.75">75%</option>
<option value="0.5">50%</option>
</select><br />
…
</div>
问题是,如果单击组合框,也会调用closeSettings。
我应该如何更改代码,以便只有在组合框外的窗口中单击时才调用closeSettings
要查看此窗口是否打开,请单击右上角的设置按钮(现在只能通过再次单击设置窗口来关闭此窗口)。您的功能可以如下使用: 只需获取clicked div的事件,以检查其子对象是clicked还是div self 您还需要更改这一行
<div id="settingsDiv" onClick="javascript:closeSettings()">
您的函数可以这样使用: 只需获取clicked div的事件,以检查其子对象是clicked还是div self 您还需要更改这一行
<div id="settingsDiv" onClick="javascript:closeSettings()">
单击组合框
event.stoppropagation()时,在函数中尝试这些方法;event.preventdefault()代码>也许它会起作用。单击组合框event.stoppropagation()时,在函数中尝试这些方法;event.preventdefault()代码>也许它会起作用。有几种方法可以做到这一点。然而,最简单的方法是在设置窗口后面添加一个具有整个窗口大小的div。通过这种方式,您可以捕获对它的单击并关闭它以及“设置”窗口。另外,您可以使用该div灰显背景。因此,您可以从这样一个选项中受益匪浅。很遗憾,您的解决方案不起作用。我确实在中实现了您的解决方案,如下所示:Font size:和function closeSettings(){$('aroundsetingsdiv')。hide()}有几种方法可以实现。然而,最简单的方法是在设置窗口后面添加一个具有整个窗口大小的div。通过这种方式,您可以捕获对它的单击并关闭它以及“设置”窗口。另外,您可以使用该div灰显背景。因此,您可以从这样一个选项中受益匪浅。很遗憾,您的解决方案不起作用。我确实在中实现了您的解决方案,如下所示:Font size:和function closeSettings(){$('aroundsetingsdiv')。hide()}是的,这很有效!!我不得不做一个小小的更正:我不得不使用if(id==“settingsDiv”)而不是if(id==“settings”)。你可以在
上看到它,非常感谢你的帮助!!我不得不做一个小小的更正:我不得不使用if(id==“settingsDiv”)而不是if(id==“settings”)。你可以在
上看到它,非常感谢
<div id="settingsDiv" onClick="javascript:closeSettings(event)">
function closeSettings(event) {
var id=event.target.id;//getting the clicked element id.
if(id=="settingsDiv")
$('#settingsDiv').hide();
}