繁体   English   中英

Click事件不会在元素上触发

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM