Tag: 事件冒泡

Javascript与jQuery:单击并双击相同的元素,不同的效果,一个禁用另一个

我有一个有趣的情况 – 我有一个表格行,当我点击“展开”button时,显示它是隐藏的对应表格。 包含展开button的原始(未隐藏)行也在某个单元格中具有某些内容,点击后该单元格可以编辑。 我想摆脱扩大button,并通过双击行本身的任何地方,包括单击它时可以编辑的字段,启用行的扩展。 你已经可以闻到麻烦了。 当我双击一行时,在发生dblclick之前,首先触发两个点击事件。 这意味着如果我双击该字段,它将变成一个可编辑的,并且该行将展开。 我想阻止这一点。 我想要doubleclick来防止单击发射,并单击执行照常。 使用event.stopPropagation()显然是行不通的,因为它们是两个不同的事件。 有任何想法吗? 编辑(一些半伪代码): 原始版本: <table> <tbody> <tr> <td><a href="javascript:$('#row_to_expand').toggle();" title="Expand the hidden row">Expand Row</a></td> <td>Some kind of random data</td> <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[0]->value("First editable value") ?></td> <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[1]->value("Second editable value") ?></td> <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[2]->value("Third editable value") ?></td> <!– … –> <td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[n]->value("Nth editable value") ?></td> </tr> <tr style="display: […]

从ListView冒泡滚动事件到其父

在我的WPF应用程序中,我有一个ListView其ScrollViewer.VerticalScrollBarVisibility被设置为Disabled 。 它包含在ScrollViewer 。 当我尝试在ListView上使用鼠标滚轮时,外部ScrollViewer不滚动,因为ListView正在捕获滚动事件。 我如何强制ListView允许滚动事件向上ScrollViewer到ScrollViewer ?

如何解除调用event.preventDefault()(使用jQuery)的侦听器?

jQuery的切换调用preventDefault()默认情况下,所以默认值不起作用。 你不能点击checkbox,你不能点击链接等 是否有可能恢复默认处理程序?

捕获围绕一个iframe的div点击

我如何捕捉围绕iframe的div上的点击或mousedown事件。 我已经尝试附加function点击事件上的div,但由于iframe从来没有泡沫的事件到周围的div这个function是永远不会被调用。 有没有一种方法,我可以捕获div上的事件,然后传播给iframe默认的行动

当在页面的任何地方点击时jQuery隐藏元素

我想知道这是否是在页面上的任何位置单击时隐藏可见元素的正确方法。 $(document).click(function (event) { $('#myDIV:visible').hide(); }); 点击事件发生在元素的边界内时,元素(div,span等)不应该消失。

防止父元素的滚动?

我有一个“浮动工具箱” – 一个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 – […]

直接与委托 – jQuery .on()

我想了解使用jQuery .on()方法 直接和委托事件处理程序之间的这种特殊区别。 具体来说,这一段的最后一句话是: 当提供selector ,事件处理程序被称为委托 。 当事件直接发生在绑定元素上时,处理程序不会被调用,但是只有匹配select器的后代(内部元素)才会调用该处理程序。 jQuery将事件从事件目标拖动到处理程序所在的元素(即,最内层到最外层的元素),并沿着匹配select器的path上的任何元素运行处理程序。 这是什么意思“运行处理程序的任何元素”? 我做了一个testing页面来实验这个概念。 但是下面的结构都会导致相同的行为: $("div#target span.green").on("click", function() { alert($(this).attr("class") + " is clicked"); }); 要么, $("div#target").on("click", "span.green", function() { alert($(this).attr("class") + " is clicked"); }); 也许有人可以参考一个不同的例子来澄清这一点? 谢谢。