当前位置: 首页 > 面试题库 >

jQuery和AngularJS:将事件绑定到不断变化的DOM

潘青青
2023-03-14
问题内容

在AngularJS的DOM中,我在ng-repeat指令中使用ng-
include。它可以很好地加载HTML。无论如何,我遇到的一个问题是我正在使用JQuery(最新版本)将DOM中元素上的一些鼠标悬停和鼠标单击事件绑定到与ng-
repeat和include添加到DOM上的类相同的类。不过,JQuery似乎并未将事件处理程序应用于新添加的DOM。

在以前的版本中,.live()似乎可以满足我的要求,但是在最新版本中已将其删除。我是否应该清除元素上的绑定并在DOM每次添加类的其他元素时重新创建它们?


问题答案:

在这里回答:

这是一个多方面的问题。首先,所有jQuery代码事件都应使用$ scope。$ apply来按预期方式执行angularjs代码。例:

jQuery(selector).someEvent(function(){
    $scope.$apply(function(){
      // perform any model changes or method invocations here on angular app.
    });
});

在最新版本的jQuery中,为了使事件根据DOM更改而更新,您需要1.为最近的父元素(例如)获取选择器:

<div class="myDiv">
<div class="myDynamicDiv">
</div>
<!-- Expect that more "myDynamicDiv" will be added here -->
</div>

在这种情况下,您的父选择器将是“ .myDiv”,而您的子选择器将是.myDynamicDiv。

因此,您希望jQuery在元素的PARENT上具有事件,因此,如果子元素发生更改,它将仍然有效:

$('.myDiv').on("click", ".myDynamicDiv", function(e){
      $(this).slideToggle(500);
      $scope.$apply(function(){
           $scope.myAngularVariable = !$scope.myAngularVariable;
      });
});

注意,使用$ scope。$ apply()是为了使jQuery能够访问那些角度变量

希望这可以帮助!基督教



 类似资料:
  • 本文向大家介绍浅谈jQuery的bind和unbind事件(绑定和解绑事件),包括了浅谈jQuery的bind和unbind事件(绑定和解绑事件)的使用技巧和注意事项,需要的朋友参考一下 绑定其实就是把一些常规时间绑定到页面,然后进行各种常规操作 解绑就是接触绑定,绑定的事件失效 要注意,iQuery中的  .事件  如(.click())其实就是单个的绑定事件的简写(bind("click"))

  • 问题内容: 我试图弄清楚如何用角度绑定工具提示的内容。我有一个看起来像这样的指令: script.js 它从这里使用qTip2插件 我的index.html看起来像这样(请注意,在实际文件中,我已经包括了所有源文件,为了避免混乱,我只是未将其粘贴在此处): 和 button.html 如您在指令代码中看到的。将button.html加载到工具提示中,但是这会阻止angular正常运行-将butto

  • 本文向大家介绍浅谈jquery之on()绑定事件和off()解除绑定事件,包括了浅谈jquery之on()绑定事件和off()解除绑定事件的使用技巧和注意事项,需要的朋友参考一下 off()函数用于移除元素上绑定的一个或多个事件的事件处理函数。 off()函数主要用于解除由on()函数绑定的事件处理函数。 该函数属于jQuery对象(实例)。 语法 jQuery 1.7 新增该函数。其主要有以下两

  • 问题内容: 我试图弄清楚如何将AngularJS范围变量绑定到CSS语法中。我认为问题出在花括号中。这是我基本上想做的事情: 关于如何实现这一目标的任何想法?谢谢! 问题答案: 如此处所述, angular不会在样式标签内的内容上运行。在那篇文章中有一个解决方法,但是作为一种更灵活的方法,我只是创建一个指令来获取内容,解析它们并替换: 更新的答案 用法: http://jsfiddle.net/V

  • 本文向大家介绍JQuery中绑定事件(bind())和移除事件(unbind()),包括了JQuery中绑定事件(bind())和移除事件(unbind())的使用技巧和注意事项,需要的朋友参考一下 有时候事件执行完了,想取消事件的效果可以通过一定的办法来处理。比如bind()(绑定事件)和unbind()(移除通过bind()方法添加的事件)方法来移除事件的效果。 比如下面的一个案例: html

  • 本文向大家介绍js绑定事件和解绑事件,包括了js绑定事件和解绑事件的使用技巧和注意事项,需要的朋友参考一下 在js中绑定多个事件用到的是两个方法:attachEvent和addEventListener,但是这两个方法又存在差异性 attachEvent方法  只支持IE678,不兼容其他浏览器 addEventListener方法   兼容火狐谷歌,不兼容IE8及以下 addEventListe