0

我有以下工作代码,当我单击a带有 id 的标签时,“hi”会打印到控制台info-toggle

<a href="#" id="info-toggle">More info</a>

$.ajax({
  'url': '/maps/building/' + marker.urlID,
  'dataType': 'json',
  'success': function(data) {
    infowindow.setContent(data.html_short);
    infowindow.open(map, marker);
    $(document).on('click', '#info-toggle', function(event) {
      event.preventDefault();
      console.log('hi');
    });
  }
});

但是,如果我将.on()调用修改为以下

$('#info-toggle').on('click', function(event) {
  event.preventDefault();
  console.log('hi');
});

'hi' 没有打印出来。

从文档:

当提供选择器时,事件处理程序被称为委托。当事件直接发生在绑定元素上时,不会调用处理程序,而只会调用与选择器匹配的后代(内部元素)。jQuery 将事件从事件目标冒泡到附加处理程序的元素(即,从最内到最外的元素),并为沿该路径匹配选择器的任何元素运行处理程序。

selector指括号内的选择器还是函数$()中的第二个参数?.on().on( events [, selector ] [, data ], handler(eventObject) )

4

0 回答 0