【问题标题】:Custom class in an array loop wont work数组循环中的自定义类不起作用
【发布时间】:2013-08-12 22:40:56
【问题描述】:

我正在尝试使用将附加在数组的每个元素中的类 (question),循环工作正常。我的问题是当我尝试在 jQuery 中使用该类时没有任何反应,就好像它不存在一样......

我知道 Angular 添加了 ng-scope 和 ng-binding 类,这可能会阻止 jQuery 吗?

当我检查 DOM 没有错误并且我的课程在那里时,它就是无法工作!

这是我的代码:HTML

<p ng-repeat="n in ['Human or Lemar King?','Name of your tribe?','Can you Boogie?'] | filter:query" class="question"> {{n}}</p>

jQuery

$(function () {
  $(".question").on('click',function() {
     alert("Ohh hail King Julien!")
  });      
});

【问题讨论】:

    标签: jquery html angularjs


    【解决方案1】:

    您正在尝试为尚未在 DOM 树中的元素设置事件处理程序。

    您可以选择 angular 方式并添加 ng-click:

    <p ng-click="doSomething()" ng-repeat="n in ['Human or Lemar King?','Name of your tribe?','Can you Boogie?'] | filter:query" class="question"> {{n}}</p>
    

    或者您可以在 &lt;body&gt;(或 DOM 中存在的元素的更接近的父级)上设置实时事件:

    $(function () {
      $('body').on('click', '.question', function() {
         alert("Ohh hail King Julien!")
      });      
    });
    

    【讨论】:

    • 我明白了...但是$(function () {...}); 说在 DOM 准备好时运行脚本还是我误解了它?
    • 当 DOM 准备好时,Angular 开始发挥它的魔力,做路由和控制器的事情。所以你的 $()s 在 Angular 替换视图之前执行!如果您使用的是 Angular 应用程序,我强烈建议您使用 ng-click!
    • @stevuu 现在有意义了。谢谢。
    • ...对于这个特定的任务,ng-click 不起作用,因为该任务是 jQuery UI 特定的
    • @stevuu 总有一种方法可以使用ng-click。您可以在将调用 jQuery UI 方法的范围内创建一个函数。
    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多