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

标签 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">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>

这个 JavaScript 函数:

function closeSettings() {
$('#settingsDiv').hide();
  }

问题是,如果我单击组合框,也会调用 closeSettings。 我应该如何更改代码,以便仅在单击组合框外部的窗口时才调用 closeSettings?

要查看此窗口打开 this page然后单击右上角的设置按钮(您现在只能通过再次单击设置窗口来关闭窗口)。

最佳答案

你的函数可以这样使用: 只需获取被点击的 div 的事件来检查其子级是否被点击或 div 自身被点击。

您还需要更改此行

<div id="settingsDiv" onClick="javascript:closeSettings()">

用这一行

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

关于javascript - 如何在 DIV 控件之外处理 DIV 上的 onClick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34201155/

相关文章:

javascript - Jquery 更改未检测到选择更改 rails

javascript - 动态边界更改不会在 'react-leaflet' 中产生任何影响

javascript - HTML 内联 PDF

javascript - Ember.js Ajax 调用未按预期工作

php - JQgrid:带有自定义删除按钮的格式化程序?

html - 文本在固定标题中左右对齐并垂直居中

javascript - Promise 不按顺序执行

javascript - 如何在这个现实世界的示例中动态包含 javascript?

jquery - 如何更改jqgrid中行的特定单元格值

javascript - 为标签内容添加漂亮的滑动效果