Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在DIV控件之外处理DIV上的onClick?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何在DIV控件之外处理DIV上的onClick?

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

我有一个id为settingsDiv的DIV和几个组合框,如果我点击窗口中的某个地方,我喜欢关闭窗口,当然除了一个组合框。 我使用以下html代码:

<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();
  }