Py学习  »  Jquery

Angular 6 jquery嵌套属性单击事件不工作

Rakesh • 5 年前 • 1609 次点击  

在jquery中添加单击侦听器不起作用。似乎jquery没有选择在html中创建的嵌套属性来添加侦听器

我试着增加一个听众 ngOnInit() 但没用。

HTML代码

<ul class="list-unstyled dropdown-content" id="search_dropdown">
  <span *ngFor="let merchant of merchants">
    <li [ngClass]="{ active: isActive(merchant) }">
      <a href="" (click)="selectMerchantFromMenu($event, merchant)">{{merchant.name}}</a>
    </li>
  </span>
</ul>

类型脚本代码

$(document).ready(() => {
  $("#search_dropdown span li a").on("click", function(e) {
    e.preventDefault();
    alert($(this));
    $("#search_input").val($(this).text());
  });
});
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47225
 
1609 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Vlad Gincher
Reply   •   1 楼
Vlad Gincher    6 年前

您提供的代码仅在 document.ready ,而且它只发生一次,在角点开始之前。将此代码放入 ngOnInit 将调用 文档。就绪 在它被执行之后,它什么也不会做。

将此代码置于角度之外可能会导致另一个问题。询问( $("...") )执行一次,事件侦听器将应用于找到的元素。但是 文档。就绪 将在Angular生成代码之前执行代码,因此它将找不到任何内容。

我建议你把密码拿出来 文档。就绪 使用 .on(events, selector, handler) 以下内容:

ngOnInit() {
  $(document).on("click", "#search_dropdown span li a", function(e) {
    e.preventDefault();
    alert($(this));
    $("#search_input").val($(this).text());
  });
}

但我真的建议您不要使用带角度的jquery。Angular拥有您可能需要的一切,而无需加载额外的库。