javascript - 单击时停止元素消失

标签 javascript jquery html css position

我正在编写一个简单的 jQuery 插件,它会在文本框获得焦点时动态地将一个 div 放置在该文本框下方。我已经能够在所有浏览器中获得正确的位置。

我还必须在文本框的 focusblur 事件上附加两个事件处理程序。它工作正常,但问题是即使我们单击它,放置在文本框下方的 div 也会关闭。现在它为什么会这样发生是有道理的,这是因为文本框失去了焦点,但有什么办法可以阻止它发生吗?

我尝试将其附加到模糊事件处理程序 -

if($(mainElem).is(":focus")) return;

其中 mainElem 是显示在文本框下方的 div。

这是一个jsFiddle to illustrate问题。

最佳答案

如果您想在显示的 div 中放置“可点击”元素,您将无法使用 blur 事件。解决此问题的一种方法是将您的事件监听器绑定(bind)到更全局的元素,例如 document,然后过滤掉目标。

这是一个代码示例:

$(document).on('click', function (e) {
      var targetEl = e.target,
          parent = $(e.target).parents()[0];
      if (relElem[0] === targetEl || self[0] === targetEl || self[0] === parent) {
          $(mainElem).show();
      } else {
          $(mainElem).hide();
      }
 });

这是对您的 fiddle 的更新:http://jsfiddle.net/9YHKW/6/

关于javascript - 单击时停止元素消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18197305/

相关文章:

在平板电脑上长按/点击时触发 Javascript 事件

javascript - jQuery 求和或相乘值始终没有事件触发

javascript - 柱形图上的 Highcharts 工具提示

javascript - 当下拉列表中的项目发生变化时突出显示标签的简洁方法?

html - 更改按钮上虚线边框的颜色

javascript - 如何控制UIWebView的javascript

javascript - 我可以直接向 Express 应用程序发送请求,而不是通过 http 吗?

jquery - 为什么在 iOS 全屏模式下运行时,jquery ajax 无法在基于 Coldfusion/Apache 的 Web 应用程序中工作?

javascript - 刷新html Canvas 而不刷新页面

css - 使用 CSS text-transform 时避免微米符号 μ 显示为 M : uppercase