【问题标题】:jQuery click event does not trigger in AngularJS DOMAngularJS DOM 中不会触发 jQuery 点击事件
【发布时间】:2020-08-29 07:27:26
【问题描述】:

我尝试了很多方法来点击AngularJS的其他按钮。

Dom 元素:

<a class="nav-bar-link" ng-click="someMethod()">

按钮:

<a class="button">Log in</a>

预期结果

点击按钮时应该点击导航栏链接。


尝试的解决方案

$(document).on('click', '.button', function(event) {
  console.log('came');
  event.preventDefault();
  $(".nav-bar-link").click();
});
$(document).on('click', '.button', function(event) {
  console.log('came');
  event.preventDefault();
  $(".nav-bar-link").triggerHandler('click');;
});
$(document).on('click', '.button', function(event) {
  console.log('came');
  var a = $('nav-bar-link')[0];
  var e = document.createEvent('MouseEvents');
  e.initEvent('click', true, true);
  a.dispatchEvent(e);
});
$(".button").click(function() {
  setTimeout(function() {
    $('.nav-bar-link').trigger('click');
  }, 100);
  return false;
});

这些答案是从浏览器控制台测试的。

如果有任何触发点击的解决方案,请告诉我。上述解决方案均无效。

我也接受 jQuery 和 JavaScript 解决方案。

【问题讨论】:

  • 如果您使用的是Angular,为什么不使用$scope.someMethod = fucntion() {}?
  • 有一个用 Angular JS 编写的 $scope 函数,当点击另一个元素时,我试图触发对该函数的点击。我只需要一种使用 Jquery 启用触发器的方法。注意:Jquery 在浏览器中完美运行。为什么我无法在 DOM 中触发点击事件

标签: javascript jquery html angularjs


【解决方案1】:

你应该指定选择器的类型,在你的情况下.nav-bar-link,改变

$("nav-bar-link").click(); 

通过

$(".nav-bar-link").click(); 

更新

你不需要写太多代码来调用一个事件,如果你使用angular你可以使用triggerHandler:

$(document).on('click', '.button', function(event) { 
     console.log('came'); 
     angular.element('.nav-bar-link').triggerHandler('click');
});

结果: https://jsfiddle.net/cmedina/4pkdros9/

【讨论】:

  • 更新了问题。编辑是个问题。可以请您现在检查吗
  • 我不懂你的 jsfiddle,因为没有 Angular JS 实现。
  • .nav-bar-link ng-click 函数用 Angular js 编写。我不认为你的答案会奏效。你正在用 jquery 编写单独的函数调用
  • 我不能使用角度方法,因为我试图触发来自第三方应用程序的点击,我只能使用 jquery 。但是触发元素有角度方法。准确地说,我需要: angular js DOM 上的 jquery click 事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 2011-11-19
  • 2016-07-04
  • 1970-01-01
  • 2020-12-27
  • 2013-05-19
相关资源
最近更新 更多