【问题标题】:Is jQuery 1.3.2 causing this not to work, or something else?是 jQuery 1.3.2 导致这不起作用,还是其他原因?
【发布时间】:2012-07-20 04:18:19
【问题描述】:

我知道这应该可以工作,它在 1.7.2 中可以正常工作

//click anywhere to close dropdown
$("html").live("click", function () {
    closeDropdown();
});

//on click of ellipsis, open dropdown
$("span.PivotEllipsis").click(function (e) {
    e.stopPropagation();
    openDropdown();
});

它是经典的点击外span.PivotEllipsis 隐藏。但是,问题是第二个功能不起作用。第一个工作正常,当您单击外部时,它会隐藏。但是,当您单击 span.Pivot Ellipsis 时,它不会弹出,而是我认为,虽然很难说,它运行 openDropdown() ,然后在 closeDropdown() 之后立即运行......

有人知道这是怎么回事吗?

【问题讨论】:

标签: javascript jquery jquery-1.3.2


【解决方案1】:

根据jQuery Documentation:“无法停止直播事件的传播。”你真的不需要使用.live(),因为 html 元素存在于 document.ready 中并且不是动态加载的

【讨论】:

  • 实际上,现在我想起来了,我不确定它们是否意味着您无法在实时处理程序中停止事件的传播,或者您是否无法停止事件传播到实时处理程序...嗯。
  • 是的,它们的意思是 in .live() 处理程序。您仍然可以在绑定到子元素的处理程序上停止传播,这将防止事件冒泡到文档。
【解决方案2】:

您认为可能是正确的 - 您需要在下拉菜单未打开时禁用第一个功能。

【讨论】:

  • 为什么?如果 OP 正在使用stopPropagation,则该事件永远不会到达.live() 处理程序,因此永远不会调用closeDropdown() 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多