Tag: 事件传播

点击链接后closures引导程序下拉菜单

下面有一个引导下拉菜单。 它有一个链接,它连接到一个knockout.js绑定,返回false,因为我不希望#标签发送到浏览器的url。 但是,这样做不会closures下拉菜单,当我点击链接。 无论如何,这个呢? HTML <div class="btn-group"> <button class="btn dropdown-toggle" data-toggle="dropdown" data-bind="enable: !noResults()"><i class="icon-download-alt" ></i> Export <span class="icon-caret-down"></span></button> <ul class="dropdown-menu"> @foreach(var exportUrl in Model.ExportUrls) { <li> <a href="#" data-bind="disable: noResults(), download: { url: '@exportUrl.Value', data: data }"><img src="/Content/lesshttp://img.dovov.comimg/@(exportUrl.Key.ToString().ToLower()).png" alt="@exportUrl.Key.GetDisplayName()"/> @exportUrl.Key.GetDisplayName()</a> </li> } </ul> </div> knockut.js绑定 ko.bindingHandlers.download = { init: function (element, valueAccessor) { var value […]

取消后如何继续事件传播?

当用户点击某个链接时,我想给他们一个确认对话框。 如果他们点击“是”,我想继续原来的导航。 一个catch:我的确认对话框是通过返回一个jQuery.Deferred对象来实现的,只有当用户点击Yesbutton时才parsing。 所以基本上确认对话框是asynchronous的。 所以基本上我想要这样的东西: $('a.my-link').click(function(e) { e.preventDefault(); e.stopPropogation(); MyApp.confirm("Are you sure you want to navigate away?") .done(function() { //continue propogation of e }) }) 当然,我可以设置一个标志,并重新触发点击,但这是混乱的。 任何自然的方式呢?

防止父元素的滚动?

我有一个“浮动工具箱” – 一个position:fixed; overflow:auto的div position:fixed; overflow:auto position:fixed; overflow:auto 。 工作得很好。 但是,当滚动到该框内(用鼠标滚轮)并到达底部或顶部时,父元素“接pipe”“滚动请求”:工具框后面的文档滚动。 – 这是烦人的,而不是用户“要求”。 我正在使用jQuery,并认为我可以用event.stoppropagation()停止这种行为: $("#toolBox").scroll( function(event){ event.stoppropagation() }); 它确实进入了这个function,但是仍然会传播(文档滚动) – 在SO(和Google)上search这个主题是非常困难的,所以我必须问: 如何防止滚动事件的传播/冒泡? 编辑: 工作解决scheme感谢amustill(和Brandon Aaron的mousewheel-plugin在这里: https://github.com/brandonaaron/jquery-mousewheel/raw/master/jquery.mousewheel.js $(".ToolPage").bind('mousewheel', function(e, d) var t = $(this); if (d > 0 && t.scrollTop() === 0) { e.preventDefault(); } else { if (d < 0 && (t.scrollTop() == t.get(0).scrollHeight – […]

event.preventDefault()与返回false

当我想阻止其他事件处理程序在某个事件被触发后执行时,我可以使用两种技术之一。 我将在示例中使用jQuery,但这也适用于纯JS: 1. event.preventDefault() $('a').click(function (e) { // custom handling here e.preventDefault(); }); 2. return false $('a').click(function () { // custom handling here return false; }); 这两种停止事件传播的方法是否有显着差异? 对我来说, return false; 比执行一个方法更简单,更短,也可能更less出错。 用这个方法,你必须记住正确的套pipe,括号等 另外,我必须在callback中定义第一个参数才能调用该方法。 也许,有一些原因,我应该避免这样做,并使用preventDefault呢? 什么是更好的方法?

如何在单击子锚时防止父母的onclick事件触发?

我目前正在使用jQuery来使div可点击,在这个div我也有锚。 我遇到的问题是,当我点击一个锚点两个点击事件触发(为div和锚点)。 如何防止在单击锚点时触发div的onclick事件? 这是破碎的代码: JavaScript的 var url = $("#clickable a").attr("href"); $("#clickable").click(function() { window.location = url; return true; }) HTML <div id="clickable"> <!– Other content. –> <a href="http://foo.com">I don't want #clickable to handle this click event.</a> </div>