他们似乎在做同样的事情......一个是现代的还是一个旧的?或者它们是否受不同浏览器的支持?
当我自己处理事件(没有框架)时,我总是检查两者并执行两者(如果存在).(我也是return false
,但我觉得这与附加的事件无关node.addEventListener
).
那两个为什么呢?我应该继续检查两者吗?或者实际上有区别吗?
(我知道,很多问题,但它们都是一样的=))
我试图"停止传播"以防止在点击li中的元素(链接)时关闭Twitter Bootstrap导航栏下拉列表.使用这种方法似乎是常见的解决方案.
在Angular中,似乎是一个指令就是这样做的地方?所以我有:
// do not close dropdown on click
directives.directive('stopPropagation', function () {
return {
link:function (elm) {
$(elm).click(function (event) {
event.stopPropagation();
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
...但该方法不属于元素:
TypeError: Object [object Object] has no method 'stopPropagation'
Run Code Online (Sandbox Code Playgroud)
我指的是指令
<li ng-repeat="foo in bar">
<div>
{{foo.text}}<a stop-propagation ng-click="doThing($index)">clickme</a>
</div>
</li>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我写了一个脚本,如果提供的数据不正确,应停止执行.但是,虽然stop
会生成错误消息,但脚本仍会继续.一个最小的例子:
if (TRUE) {stop("End of script?")} #It should stop here
print("Script did NOT end!") # but it doesn't, because this line is printed!
Run Code Online (Sandbox Code Playgroud)
控制台输出:
> if (TRUE) {stop("End of script?")}
Error: End of script?
> print("Script did NOT end!")
[1] "Script did NOT end!"
>
Run Code Online (Sandbox Code Playgroud)
这实际上并不奇怪,因为来自?stop
:
停止执行当前表达式并执行错误操作.
所以它只结束当前表达式,而不是脚本.我在这里发现你可以将{}包裹在整个脚本周围(或者将它放在一个函数中),但这似乎是一种解决方法而不是解决方案.当然,捕获错误并自行处理它们是很好的编程习惯(例如参见mra68中的注释中的链接),但我仍然想知道是否可以在R中停止脚本.
我也尝试过return
和break
,但这只有在一个函数或循环工作.我搜索了其他可能的关键字,如"停止"和"结束",但没有运气.我感觉有点愚蠢,因为这似乎是一个非常基本的问题.
那么,是否有一个命令可以使我的脚本停止/停止/结束致命错误?
我在Windows 8上运行R 3.2.3,但在MAC-OSX上与R 3.0.1有同样的问题.
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 …
Run Code Online (Sandbox Code Playgroud) 我似乎无法让这个停止传播..
$(document).ready(function(){
$("body").on("click","img.theater",function(event){
event.stopPropagation();
$('.theater-wrapper').show();
});
// This shouldn't fire if I click inside of the div that's inside of the
// `.theater-wrapper`, which is called `.theater-container`, anything else it should.
$(".theater-wrapper").click(function(event){
$('.theater-wrapper').hide();
});
});
Run Code Online (Sandbox Code Playgroud)
有人可以解释event.preventDefault()
和之间的区别是event.stopPropagation()
什么?
我有一张桌子,在那张桌子里我有一个img标签.
当我点击img标签时,我想看一个弹出窗口.
但我也想停止选择多行,所以我使用:
$("table.items tbody tr").click(function(event) {
event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
当我使用js代码时,弹出窗口不会出现;
如果我删除了js代码,弹出窗口就可以了.
$(".info").live("click",function(e){
//console.log('ok');
e.stopPropagation();
var elem = $(this);
var id = $(this).attr("id").replace("image_","container_");
$('#'+id).toggle(100, function() {
if($(this).css('display') == 'block') {
$.ajax({
url: "$url",
data: { document_id:elem.attr('document_id') },
success: function (data) {
$('#'+id).html(data);
}
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
为什么?
我在页面中有一个垂直滚动的div也可以垂直滚动.
当使用鼠标滚轮滚动子div并到达滚动条的顶部或底部时,页面(正文)开始滚动.当鼠标在子div上时,我希望页面(正文)滚动被锁定.
这个SO帖子(向下滚动到所选答案)很好地证明了这个问题.
这个SO问题与我的问题基本相同,但选定的答案会导致我的页面内容在滚动条消失并重新出现时明显地水平移动.
我认为可能有一个利用event.stopPropagation()的解决方案,但无法获得任何工作.在ActionScript中,这种事情可以通过在子事件上放置一个鼠标轮处理程序来解决,该子事件在事件到达body元素之前调用stopPropagation().由于JS和AS都是ECMAScript语言,我认为这个概念可能会翻译,但它似乎没有用.
是否有解决方案可以防止我的页面内容移动?最有可能使用stopPropagation而不是CSS修复?JQuery的答案和纯JS一样受欢迎.
我想制作一个额外的点击处理程序(客户端页面,不能修改他的js/html),它应该在我的脚本中这样工作:
1)event.stopPropagation
(暂停客户点击传播)
2)我的功能(做我的功能,当一切都完成后做下一步)
3)event.startPropagation
(继续标准客户端动作)
现在,第一个和第二个工作.第三是问题.
我知道event.startPropagation
不存在,但我想要那样的东西.任何提示?
我创建了一个带有.on("click")行为的SVG元素,并使用.on("click")附加了g元素,并认为我可以使用d3.event.stopPropagation()来保持SVG click事件不会被触发g点击事件.相反,这两个事件继续发生.所以我必须把stopPropagation放在错误的地方.
svg = d3.select("#viz").append("svg:svg")
.attr("width", 800)
.attr("height", 800)
.on("mousedown", mousedown);
sites = svg.selectAll("g.sites")
.data(json.features)
.enter()
.append("svg:g")
.on("click", siteClick)
;
sites.append("svg:circle")
.attr('r', 5)
.attr("class", "sites")
;
function mousedown() {
console.log("mouseDown");
}
function siteClick(d, i) {
d3.event.stopPropagation();
console.log("siteClick");
}
Run Code Online (Sandbox Code Playgroud) 使用 Javascript 可以停止代码传播吗?例如
function func1(event) {
alert("DIV 1");
if (document.getElementById("check").checked) {
event.stopPropagation();
}
}
Run Code Online (Sandbox Code Playgroud)
是否也可以通过 CSS 来停止传播?
我绑定到一个链接(通过使用.live()
jQuery 的函数)click
事件,然后手动添加一个onclick
纯JS和HTML(如<a href="".... onclick="some action">
)的事件处理程序.我想防止事件冒泡到live
方法,但我不知道如何.
也许e.stopPropagation()
在这种情况下是有用的,但添加的事件处理程序onclick
是用纯JS编写的,我无法stopPropagation()
从外部调用jQuery元素包装器.return false
在这种情况下不起作用.我试图替换return false
,$.Event('click').stopPropagation()
但我认为这是错误的,因为它不起作用.
如何在live()
没有jQuery包装器的情况下防止冒泡到方法?
stoppropagation ×10
javascript ×7
jquery ×5
angularjs ×1
css ×1
d3.js ×1
dom-events ×1
events ×1
html ×1
propagation ×1
r ×1
scroll ×1
svg ×1