我有以下工作代码,当我单击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) )