2010-11-23 100 views
3

我在我的网页上有一个下拉列表,附带一个jQuery事件附加到change事件。在更改时,我使用ajax在弹出窗口中加载部分视图。如何防止给定事件下拉列表上的jQuery事件触发

当用户使用键盘浏览项目列表,然后单击页面另一部分的链接时,我会立即看到我的弹出窗口。当用户点击页面其他地方的链接时,显然会发生这种情况,首先在下拉菜单中触发更改事件。

是否有任何整洁的解决方案来解决这个问题?一个简单的解决方案是在keyup上触发事件,但我不希望发生这种功能。

这里的代码更改事件片段,因为变化事件在任何情况下解雇

$('#lookup').change(function() 
{ 
    $.get(..//load template 

回答

0

没有找到我喜欢或用我的风格干净利落的解决方案,因此决定在“更改”和“关键”事件上都触发触发器,以避免出现这种情况。

0

事件不能停止。

一种可能性可能是在事件触发和$ .get方法的实际调用之间设置一定的超时时间,以便将您的情况考虑在内,但当然这不是一个优雅的解决方案。

否则,只有当某个其他元素获得焦点时(例如,如果在下拉列表后面有文本框),您才可以调用返回函数。

我不会太在意它,因为看起来你的弹出窗口会在下拉菜单中显示。如果不重要,您可以在下拉菜单的右侧有一个帮助按钮,在按钮的点击时弹出窗口。

0

我对你的问题有点困惑。但假设“变化”不是真正的变化,我认为你可以为“lastSelected”保留一个变量,当发生变化时,检查它是否与此相反。如果相同,请忽略它。如果不同,请关闭Ajax请求并更新“lastSelected”的值。

1

如果它是ajax调用,那么您的ajax调用有可能被缓存。确保您正在禁用缓存。像“缓存:假”

+0

我不明白这是如何涉及到这个问题。 – 2012-11-26 07:41:44