[英]Click event doesn't fire on element
我正在使用WinJS构建Windows 8.1 Store应用程序。 当用户查询时,某些搜索结果会显示在<p class="searchresults">content</p>
标签中。
我想向.searchresults
类添加事件处理程序。 我已经完成以下工作:
$('.searchresults').on('click', function() {
console.log("clicked");
});
我什至没有.on()
$('.searchresults').click(function() {
console.log("clicked");
});
但是,该事件从未触发过。 我已经设置了一个断点,所以我可以看到它何时触发-但这永远不会发生
我试图通过WinJS方式添加事件处理程序:
Microsoft.Maps.Events.addHandler(document.getElementsByClassName("searchresults"), 'click', myfunc);
没有成功。
任何想法为什么会这样?
我会猜测您在尝试安装事件处理程序(动态内容的常见问题)之后创建了<p class="searchresults">content</p>
对象。 这不适用于常规事件处理,因为当您尝试向其添加事件处理程序时DOM对象不存在。
如果是这种情况,则需要使用委托事件处理,如下所示:
$(document.body).on('click', '.searchresults', function() {
console.log("clicked");
});
这将允许您随时动态创建searchresults内容,并且事件处理程序仍将通过事件委托触发(事件传播到其父对象)。
您尚未显示搜索结果内容周围的HTML,但是最理想的方法是选择与搜索结果最接近的静态父对象(该父对象不是动态创建的,并且在附加事件时已经存在处理程序)并将事件附加到该事件:
$(closest static parent selector).on('click', '.searchresults', function() {
console.log("clicked");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.