从来没有遇到这个,任何人都可以给我任何指针吗?
我正在创建一个网络应用程序,用于将笔记发布到白板上.此时,spawn按钮将产生音符,但我想制作它以便用户可以单击画布上的任何位置(白板),它将在该位置产生一个新音符.
这是代码: -
$("#canvas").bind('click', function(e){
// Calculate offset for width, put box to the left top corner of the mouse click.
var x = e.pageX + "px";
var y = e.pageY + "px";
$("#note").clone().insertBefore("#insertAfter").attr("id", "note" + noteID).show();
$("#note" + noteID).children(".title").text("Note " + noteID);
$("#note" + noteID).css({left:x, top:y, "z-index" : zindex});
noteID++;
zindex++;
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
});
Run Code Online (Sandbox Code Playgroud)
当用户点击其中一个音符时会出现问题,因为每次用户点击音符时,便会将音符克隆到画布中,从而创建另一个音符.我想停止此行为,并仅在用户单击空白画布区域时创建注释.我已经尝试过preventDefauly,stopPropagation和stopImmediate ......但是它们似乎都没有任何影响.
我也尝试过其他动作,例如音符点击,但似乎无法在正确的位置找到合适的音乐?还是我完全以错误的方式解决这个问题?
这里的例子:
http://www.kryptonite-dove.com/sandbox/animate
更新:
$('#canvas').on('click', '.note', function(e) {
e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
这解决了注释冒泡的问题,但它现在阻止了注释类上的任何点击操作,我在这里未知的水域!我将不胜感激任何有关如何让点击操作恢复为音符标题和文字工作的指示:)
我在keydown和停止传播时遇到了困难
我不希望我的页面刷新,我已经尝试了我能想到的每一种方式,我目前的代码是
<script>
$(document).ready(function() {
var e = jQuery.event( 'keydown', { which: $.ui.keyCode.ENTER } );
$('#id_number').trigger(e, function(event){
event.preventDefault();
event.stopPropagation();
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?我认为事件被正确调用,我有正确链接的jquery和jquery ui并且没有收到控制台错误
更新 很好它正在工作,现在我正在获取对象函数的属性'事件'(a,b){return new e.fn.init(a,b,h)}不是下面代码的函数错误
$(document).ready(function() {
var e = jQuery.event( 'keydown', { which: $.ui.keyCode.ENTER } , function(event){
event.preventDefault();
event.stopPropagation();
});
$('#id_number').trigger(e);
});
Run Code Online (Sandbox Code Playgroud)
更新#2 - 修复
我学到的东西
把它改写成这个,工作得非常好
$(document).ready(function() {
$('#id_number').keydown(OnKeyDown);
});
function OnKeyDown(e){
var code = (e.keyCode ? e.keyCode : e.which); //to support both methods
if(code == 13) { //the Enter …
Run Code Online (Sandbox Code Playgroud) 我已经阅读了jQuery doc,我知道如果我使用live()将事件绑定到元素上,使用stopPropagation()是没有意义的,因为带有live()的事件绑定到文档节点,因此事件已经被激活了.这么说,我认为nex代码会提醒3次,因为stopPropagation不会停止任何事情:
<ul style="border:red solid 1px;">
<li style="padding:10px; border:blue solid 1px;">
<p style="border:green solid 1px;"><a href="#">link</a></p>
</li>
<li style="padding:10px; border:blue solid 1px;">
<p style="border:green solid 1px;">no link</p>
</li>
</ul>
<script type="text/javascript">
$('a').live( "click", function( e ) {alert("link");e.stopPropagation()} );
$('ul').live( "click", function( e ) {alert("ul");} );
$('ul li').live( "click", function( e ) {alert("li");} );
</script>
Run Code Online (Sandbox Code Playgroud)
当我点击链接时我预期并提醒"li"和"ul",但是当它应该是没用的时候,stopPropagation会停止其他事件.我错过了什么?
很多人都解释说e.stopPropagation()
可以防止事件冒泡.但是,我很难找到为什么人们想要或者想要首先阻止事件冒泡.
在我的网站上,我有许多元素,如下所示:
$(document.body).on('click', ".clickable", function(e){
//e.stopPropagation();
//do something, for example show a pop-up or click a link
});
<body>
<p>outside stuff</p>
<button type="button" class='clickable'>
<img src='/icon.jpg'> Do Something
</button>
</body>
Run Code Online (Sandbox Code Playgroud)
我想添加e.stopPropagation()
因为我想要将事件处理程序更改'touch'
为'click'
使用这个真棒触摸库Hammer.js..这将允许点击在桌面上正常发生以及在移动设备上进行触摸事件.
这个问题(请纠正我,如果我错了)是触摸设备上的滚动减慢停止.
这e.stopPropgation()
有用吗?这样,无论何时触摸屏幕 - document.body
事件冒泡都不会每次都发生?
javascript jquery javascript-events event-bubbling stoppropagation
我的网站上有一个问题,选择选择器工作时间很长,但没有对代码进行任何更改,选择选择器停止工作.
错误是:
bootstrap-select.min.js:7未捕获TypeError:d.stopPropagation不是函数
我已经尝试更新库的版本,但我尝试的所有版本(1.10,1.7,1.6和1.5)看起来都有同样的问题.
你能告诉我一些有关正在发生的事情的想法吗?如果你能看到网站上的控制台会很棒.
javascript stoppropagation twitter-bootstrap bootstrap-selectpicker
我有一个内部开发设备,高度固定,overflow-y: scroll;
可以在y方向上滚动内容。当滚动达到顶部或底部时,外部div滚动。我想防止这种情况。
<section id="concept" class="testimonials bg-black">
<div class="col-lg-12">
<div class="concept-frame">
</div>
</div>
</section>
Run Code Online (Sandbox Code Playgroud)
我使用以下JavaScript:
$( ".concept-frame" ).scroll( function(e) {
console.log( "Scolling ..."+$(this).scrollTop() );
e.stopPropagation();
} );
Run Code Online (Sandbox Code Playgroud)
但是没有效果。如何停止滚动传播到外部div?
我有以下Hot Observable:
hotObservable = Observable.interval(0L, 1L, TimeUnit.SECONDS)
.map((t) -> getCurrentTimeInMillis()))
Run Code Online (Sandbox Code Playgroud)
但是,我找不到阻止它的好方法.我能够使用takeWhile
和boolean
标志(runTimer
)部分解决这个问题:
Observable.interval(0L, 1L, TimeUnit.SECONDS)
.takeWhile((t) -> runTimer)
.map((t) -> getCurrentTimeInMillis()))
Run Code Online (Sandbox Code Playgroud)
但是,在这种方法中我有两件事我不喜欢:
runTimer
,我不想要.runTimer
变为false
,Observable 就会完成,这意味着如果我想再次发射,我需要创建一个新的Observable.我不希望这样.我只是希望Observable停止发射物品,直到我告诉它重新开始.我希望这样的事情:
hotObservable.stop();
hotObservable.resume();
Run Code Online (Sandbox Code Playgroud)
这样我就不需要保持任何标志,并且observable总是活着的(虽然它可能不会发出事件).
我怎样才能做到这一点?
android reactive-programming stoppropagation rx-java rx-java2
例如,我们有一个带有链接的页面,上面有onclick
事件侦听器。但是处理程序使stopPropagation
. click
如果不再冒泡到root,我该如何处理该事件?
例如
document.addEventListener('click', function(e) {console.log(e);});
a.onclick = function(e) {e.stopPropagation();};
Run Code Online (Sandbox Code Playgroud) 我的代码中有一个tap
事件。它的父级(不是直接父级)也有tap
事件。在 Android 中,一切正常。但在 中ios
,事件向上传播到该父级。如何停止该事件传播(例如event.stopPropagation()
在 中javascript
)。
XML 代码示例:
<StackLayout tap="newsDetails" data-args="{{ $value }}">
<StackLayout orientation="horizontal" >
<Label text="Share" class="icon" tap="shareNews" data-args="{{ $value }}"/>
</StackLayout>
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
注意:我使用的是 NativeScript 核心
谢谢。
已经有一些尝试来回答这个问题:
here,here和here。然而,没有一个答案给出了可靠的回应。我不是指的event
阶段capture
,bubble
以及target
如何stopPropagation()
影响整个事件。我正在寻找添加stopPropagation()
到 DOM 节点将有利于整体代码的情况?
javascript event-handling event-propagation dom-events stoppropagation
stoppropagation ×10
javascript ×5
jquery ×5
dom-events ×2
jquery-ui ×2
android ×1
events ×1
html ×1
keydown ×1
nativescript ×1
rx-java ×1
rx-java2 ×1
scroll ×1