【问题标题】:Binding a js event according to mouse position : performance killer or not?根据鼠标位置绑定js事件:性能杀手与否?
【发布时间】:2011-06-30 17:33:03
【问题描述】:

我已经这样做了: http://jsfiddle.net/CS273/4/

在这个小提琴上,当鼠标到达文本输入的右侧区域时,它会改变光标(指针)并创建一个点击事件监听器。 当鼠标离开正确的区域时,同样的事件监听器被销毁。

我会称之为“动态”事件侦听器绑定,也许它已经有了一个名称。

这样做到底好不好?

【问题讨论】:

  • 似乎只设置/清除一个标志会更便宜一些,并将处理程序中的代码包装在一个检查它的“if”中......

标签: javascript events dom mouseevent


【解决方案1】:

在所有条件相同的情况下,您可能永远不会注意到性能下降,但这是一种有点奇怪的方式来做您想做的事情。

我建议重新处理您的 HTML,以便“x”不是输入的一部分,您可以附加一个普通的事件处理程序。

示例:http://jsfiddle.net/cwolves/CS273/6/

【讨论】:

  • 表演好了。正如您所建议的,事情似乎要简单得多,这就是 Google 在其搜索页面上所做的......
【解决方案2】:

查看您的小提琴的此更新:http://jsfiddle.net/maniator/CS273/5/

我制作了一个浮动 div 来为你处理点击。

这里有一些颜色,所以你可以看到它:http://jsfiddle.net/maniator/CS273/7/

你唯一需要的js:

$(".hover").click( function(e) {
    $('.filterNameInput').val('').blur();
});

您可以将cursor: pointer; 添加到.hover 的css 中,使其看起来与您当前的版本相同。

【讨论】:

  • 大声笑,你的答案和我的几乎一样。可能是因为position:fixed,使它成为一个不可重用的例子。
  • 我没有投反对票(我不能)但我会说固定位置是一个坏主意,我已经这样做了,在不同的浏览器中获得相同的东西是一场噩梦,即使重置。
  • @youyou,请记住输入背景并非适用于所有浏览器(它们可能不起作用)
猜你喜欢
  • 2014-10-21
  • 2018-11-29
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多