如何防止给定事件下拉列表上的jQuery事件触发
问题描述:
我在我的网页上有一个下拉列表,附带一个jQuery事件附加到change事件。在更改时,我使用ajax在弹出窗口中加载部分视图。如何防止给定事件下拉列表上的jQuery事件触发
当用户使用键盘浏览项目列表,然后单击页面另一部分的链接时,我会立即看到我的弹出窗口。当用户点击页面其他地方的链接时,显然会发生这种情况,首先在下拉菜单中触发更改事件。
是否有任何整洁的解决方案来解决这个问题?一个简单的解决方案是在keyup上触发事件,但我不希望发生这种功能。
这里的代码更改事件片段,因为变化事件在任何情况下解雇
$('#lookup').change(function()
{
$.get(..//load template
答
没有找到我喜欢或用我的风格干净利落的解决方案,因此决定在“更改”和“关键”事件上都触发触发器,以避免出现这种情况。
答
事件不能停止。
一种可能性可能是在事件触发和$ .get方法的实际调用之间设置一定的超时时间,以便将您的情况考虑在内,但当然这不是一个优雅的解决方案。
否则,只有当某个其他元素获得焦点时(例如,如果在下拉列表后面有文本框),您才可以调用返回函数。
我不会太在意它,因为看起来你的弹出窗口会在下拉菜单中显示。如果不重要,您可以在下拉菜单的右侧有一个帮助按钮,在按钮的点击时弹出窗口。
答
我对你的问题有点困惑。但假设“变化”不是真正的变化,我认为你可以为“lastSelected”保留一个变量,当发生变化时,检查它是否与此相反。如果相同,请忽略它。如果不同,请关闭Ajax请求并更新“lastSelected”的值。
答
如果它是ajax调用,那么您的ajax调用有可能被缓存。确保您正在禁用缓存。像“缓存:假”
我不明白这是如何涉及到这个问题。 – 2012-11-26 07:41:44