Tag: stoppropagation

stopPropagation()阻止子进程onClick函数

我到处搜索,我找不到这个问题的答案。 我在div中构建了一个带有几个div的菜单: Open Menu … … 还有一个使用JQuery的脚本,以便在单击“#menu”时显示(切换)菜单,并在单击主体时消失。 对于这个function,我不得不使用stopPropagation()方法来阻止#dropDownContain运行“body”的hide()函数 $(document).ready(function () { $(‘#menu’).click(function (e) { e.stopPropagation(); $(‘.dropdownContain’).toggle(); }); $(document).click(function (e) { $(‘.dropdownContain’).hide(); }); $(‘.dropdownContain’).click(function (e) { e.stopPropagation(); }); 我也为“#logout”做了一个点击事件,它在“#dropdownContain”(这是菜单的主体)里面运行someThing()函数。 jQuery(‘body’).on(‘click’, ‘#logout’, function () { alert(“THIS DOES NOT WORK”); }); 问题是“#logout”的指定函数不会触发,因为在它的父节点中调用了stopPropagation()方法(或者我认为)。 这里是这段代码的html + js链接,只是为了让你看到它在使用中: JSFiddle 那么是否有一个解决方案来解决这个问题,同时保持菜单弹出按照说明工作?

event.stopPropagation()在使用jQuery 1.7的chrome中不起作用

出于某种原因,单击文档无法在Chrome中运行(未调用closeQuickView)。 元素是通过AJAX加载的,因此需要有.on()动作(以前的.live()现在已经在jQuery 1.7中弃用了) 使用此处给出的示例: 如何检测元素外部的单击? 作为基础 $(‘html’).on(‘click’, ‘.poster:not(.active) .image-effect’, function (event) { var obj = $(this).parent(); // If there are no .close spans if (obj.find(‘.close’).length === 0) { // Add the close element by javascript to remain semantic obj.find(‘.quick-view’).append(‘×’); } // Close any open Quick Views closeQuickView(); // Add the active class (controls opacity) obj.addClass(‘active’); […]

jQuery stopPropagation无效

我正在使用以下颜色选择器 ,它工作正常,但当我点击颜色选择器图标,我不希望它冒泡到正文。 所以我尝试了以下,现在颜色选择器不工作。 查看http://jsfiddle.net/CWGgM/ 。 如果你从jsfiddle中删除下面的代码,那么它的工作原理。 造成这种情况的原因 $(‘#test’).click(function(e){ e.stopPropagation(); });

没有jQuery的stopPropagation

我绑定到一个链接(通过使用jQuery的.live()函数) click事件然后手动添加一个onclick事件处理程序与纯JS和HTML(如 )。 我想防止事件冒泡到live方法,但我不知道如何。 也许e.stopPropagation()在这种情况下是有用的,但是用onclick添加的事件处理程序是用纯JS编写的,我不能从jQuery元素包装器外部调用stopPropagation() 。 在这种情况下return false不起作用。 我试图用$.Event(‘click’).stopPropagation()替换return false $.Event(‘click’).stopPropagation()但我认为这是错误的,因为它不起作用。 如何在没有jQuery包装器的情况下防止bubling到live()方法?

鼠标滚轮在容器内滚动 – 捕捉事件

我有一个内部可滚动DIV的页面。 当我将鼠标hover在它上面并尝试使用鼠标滚轮滚动它时,在主页保持放置时,该DIV的内容会根据需要滚动。 但是当我到达DIV滚动区域的底部时,整个页面开始滚动。 我试图在该div上设置事件处理程序,但preventDefault()方法也阻止了DIV本身的滚动。 这是错误的代码: $(‘.folderlist’).on(‘DOMMouseScroll mousewheel’, function(ev){ ev.stopPropagation(); ev.preventDefault(); }) preventDefault()会阻止页面滚动,但也不允许滚动DIV。 我认为stopPropagation()在这种情况下什么都不做 我错过了什么?..

stopPropagation()与tap事件

我正在使用hammer.js ,似乎我event.stopPropagation()不适用于tap事件。 如果我单击该子项,则会触发相关事件,但也会触发父事件,我不希望这样。 $(‘#parent’).hammer().bind(‘tap’, function(e) { $(this).css(‘background’, ‘red’); });​​​​​​​​ $(‘#child’).hammer().bind(‘tap’, function(e) { e.stopPropagation(); $(this).css(‘background’, ‘blue’); }); 这是一个例子: http : //jsfiddle.net/Mt9gV/ 我也试过jGestures ,问题似乎是一样的。 如何使用其中一个库实现此结果? (如果需要,可以是另一个)

Chrome不允许使用标签预防错误

我有一个表单,用户可以在其中选项卡并跳转到不同的元素。 当它到达一个特殊的锚标签时我是要停止标签。 这是在Firefox中工作的代码 $(‘.next-tab’).keypress(function(e){ var code = (e.keyCode ? e.keyCode : e.which); console.log(code); if (code == 0 || code == 9){ console.log(“keypress”) e.preventDefault(); e.stopPropagation(); } }); 但是这个代码在chrome中不起作用,我不知道为什么,它甚至没有进入keypress方法。 所以我用这个代码换铬 $(‘.next-tab’).blur(function(e) { var code = (e.keyCode ? e.keyCode : e.which); console.log(code); if (code == 0 || code == 9){ console.log(“blur”) e.preventDefault(); e.stopPropagation(); } }); 它进入模糊方法传递条件但不做任何事情,用户可以轻松移动到下一个元素。

event.preventDefault vs event.stopPropagation

有人可以解释event.preventDefault()和event.stopPropagation()之间的区别吗? 我有一张桌子,在那张桌子里我有一个img标签。 当我点击img标签时,我想看一个弹出窗口。 但是我也想停止选择多行,所以我使用: $(“table.items tbody tr”).click(function(event) { event.stopPropagation(); }); 当我使用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); } }); } }); }); 为什么?

jQuery on()stopPropagation不工作?

我似乎无法让这个停止传播.. $(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(); }); }); 请参考这个jsfiddle