标签: event-propagation

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('<span class="close">&times;</span>');
        }

        // Close any open Quick Views
        closeQuickView();

        // Add the active class (controls opacity)
        obj.addClass('active');

        // Fade in the Quick View
        obj.find('.quick-view').fadeIn(200, 'easeInOutQuint');

        event.preventDefault();
        event.stopPropagation();

    });

    $('html').on('click', '.active', function () {
        return false;
    });

    $('html').on('click', '.close', function …
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5 event-propagation stoppropagation

4
推荐指数
1
解决办法
1万
查看次数

jQuery父和子div激活不同的动作

我有一个元素,其中包含许多组件.让我们调用这个元素框.现在在盒子里面我有许多不同的元素,图片,文字和按钮.

示例:http: //jsfiddle.net/roman_khrystyny​​ch/FSCRH/

HTML:

    <div id="container">
        <div class="box">
            <div class="button">Click</div>    
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

    $('#container').on("click", ".box", function(){
        alert('box'); //only when anything in box except button
    });

    $('#container').on("click", ".button", function(){
        alert('button'); //only when button clicked
    });
Run Code Online (Sandbox Code Playgroud)

问题是,当单击按钮时,box元素也会激活其操作.基本上我希望它是一个例外,如果我点击按钮,常规框动作不会发生,而是按钮动作发生.有什么建议?

html jquery event-propagation

4
推荐指数
1
解决办法
1147
查看次数

自定义事件的传播

我希望我的 CustomEvent 从文档传播到所有 DOM 元素。由于某种原因,它没有发生。我究竟做错了什么?

<html>
<script>
function onLoad() {
  var myDiv = document.getElementById("myDiv");
  myDiv.addEventListener("myEvent",function(){alert("Yes!");});
  document.dispatchEvent(new CustomEvent("myEvent",{detail:null}));
}
</script>
<body onload="onLoad()">
<div id="myDiv"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

html javascript dom custom-event event-propagation

4
推荐指数
1
解决办法
4794
查看次数

从分配给body的按键处理程序中排除表单字段

我在分配给body元素的网页上有一个按键处理程序.我真的希望它在网页的任何地方都是活跃的.或者我想.文本输入表单中的按键事件也会激活正文处理程序,这是有道理的,但我不想要.

理想情况下,我想将按键处理程序分配给body元素,并以某种方式排除输入表单.有什么方法可以在输入级别停止事件并防止它传播到正文?(或者甚至是查看HTML DOM事件的正确方法?)

javascript keypress javascript-events onkeypress event-propagation

3
推荐指数
1
解决办法
769
查看次数

如何阻止孩子传播由live/delegate listener触发的事件?

我有一个委托父母,用于监听具有特定类的一组子项中的单击事件.

$(".toggle_group").on("click",".toggle",function(e){ .. });
Run Code Online (Sandbox Code Playgroud)

所以这是一个html的例子

<div class='toggle_group'>
  <a class='toggle'>click me and i toggle <div>Im a child of toggle</div></a>
  <a class='toggle'>click me and i toggle <div>Im a child of toggle</div></a>
  <a class='toggle'>click me and i toggle <div>Im a child of toggle</div></a>
  <a class='toggle'>click me and i toggle <div>Im a child of toggle</div></a>
</div>
Run Code Online (Sandbox Code Playgroud)

问题是,孩子们a.toggle将事件传播给父母,当它不应该触发处理程序时.根据jQuery文档,您无法在实时/委派事件侦听器上停止事件传播.

如何阻止a.toggle的子子项传播到父项?或者在某些情况下允许它?

你看到内部div .toggle应该是一个下拉菜单.只有当您单击切换链接时,它才会在您单击菜单时切换...

jquery events parent-child event-propagation

3
推荐指数
1
解决办法
7112
查看次数

没有正确检测到jQuery mouseup

我有一个包含跨度的div.我有一个mouseup和mousedown事件,当按下div时应该触发.但它无法正常工作.

请转到这个小提琴:http://jsfiddle.net/Ym7rM/

如果您选择文本然后尝试拖动它,它只会检测到mousedown事件,但不会检测鼠标.

我究竟做错了什么?我正在使用Chrome.

谢谢

编辑:

对不起,我简化了问题,看到了新的小提琴.

jquery events event-propagation mouseup mousedown

3
推荐指数
1
解决办法
3321
查看次数

如何在不使用onclick或onmousedown的情况下从锚点的href属性中停止事件传播

由于限制,即使这是我完全避免的事情,在某种情况下我必须在achor标签的href属性中使用javascript:syntax.

(解释:在我的CMS中,我使用富文本编辑器允许用户对文本元素进行更改,包括链接.在某些情况下,需要特定的javascript:调用,并且我完全禁止从链接编辑功能上单击(以简化过程)但是,当其中一个链接出现在一个对onclick事件作出反应的块中时,该事件会发生双重攻击)

像这样:

<a href="javascript:doSomething()"></a>
Run Code Online (Sandbox Code Playgroud)

我的问题是这个链接在一个已经响应onclick事件的容器内.因此我想将事件对象传递给doSomething()方法,以便我可以使用jQuery

event.stopPropagation()
Run Code Online (Sandbox Code Playgroud)

方法.

然而不幸的是,似乎传递了事件对象

<a href="javascript:doSomething(event)"></a>
Run Code Online (Sandbox Code Playgroud)

似乎根本不起作用.Firefox将报告ReferenceError时不会说任何内容:未定义事件

我认为是这种情况,因为href =""不是脚本启动属性(例如onclick).问题是,在这种情况下,我将无法访问超出我已经做过的标签.

因此我要么需要

1.)从href属性中将事件对象传递给doSomething()函数的方法

要么

2.)通过其他方式在该锚点(在其点击之后)停止事件传播的方法.

感谢您的任何建设性意见!

javascript anchor jquery event-propagation

3
推荐指数
1
解决办法
1万
查看次数

如何在更改mat-checkbox时停止在调用函数时的事件传播?

<mat-checkbox (change)="handleProductClick(children, $event)"  [(ngModel)] = "children.selected"
[name]="children.grpId" [id]="children.id"></mat-checkbox>

handleProductClick(selectedProd : Product, event: any)
{
  event.stopPropagation();
}
Run Code Online (Sandbox Code Playgroud)

如果我使用单击功能而不是更改,则可以正常工作。虽然我无法使用click。我必须坚持改变。有没有办法从change函数调用stopPropagation?如果不是,我还能做些什么来阻止事件传播?

onchange event-propagation

3
推荐指数
1
解决办法
1418
查看次数

为什么单击嵌套元素并没有通过单击绑定冒泡到它的父级?

我有这个HTML:

<a href="#" class="action" data-action="foo">
  <h1>Some</h1>
  <p>Text<p>
</a>
Run Code Online (Sandbox Code Playgroud)

这个绑定:

$(document).on("click", ".action", function (e) {
  var do = e.target.getAttribute("data-action");
  if (do === undefined || do === null) {
    console.log("error");
  }
});
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我点击h1p,我的错误日志,而我期待点击冒泡到链接元素.

问题:
如果单击嵌套在具有单击处理程序的元素内的元素,那么正常行为是什么?为什么我的点击不冒泡?

谢谢!

javascript jquery binding click event-propagation

2
推荐指数
1
解决办法
530
查看次数

angular我只能在'ng-if`上设置'true`但我不能设置`false'

我正在尝试使用它ng-if来打开和关闭.

我只能将值设置true为显示孩子,但我无法将值设置回false.

这是我的代码:

var app = angular.module('plunker', []);

var array = [{'name':'one'}, {'name':'two'}, {'name':'three'}];

app.controller('MainCtrl', function($scope) {
    $scope.names = array;
    $scope.showChild = function ( obj ) {
        obj.show = true;
    }
    $scope.closeChild = function ( n ) {
        n.show = false;
    }
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<ul>
    <li ng-repeat="n in names" ng-click="showChild(n)">
        {{n.name}}
        <h2 ng-if="n.show">
            {{n.name | uppercase }}
        </h2> 
        <span ng-click="closeChild(n)">
            Close
        </span>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

现场演示

javascript events event-propagation angularjs angularjs-ng-click

2
推荐指数
1
解决办法
1326
查看次数