使用jquery在动态生成的列表项上单击event
Click event on dynamically generated list items using jquery
我有一个动态生成的列表,然后我点击项目并将index()
传递给另一个函数。
问题是这个列表是动态填充的,当我执行click
事件时,我的代码没有响应。但是,如果我在列表中添加一对静态li元素,除了动态填充的元素之外,这些静态元素也可以工作。真奇怪。
动态创建列表:
function SetOpenRecentURL( openRecentURL ) {
$('#recentProjectsId').append('<li>' + openRecentURL + '</li>')
}
这是传递Index()的click事件:
$('#recentProjectsId li').on('click', function () {
var projIndex = $(this).index();
console.log(projIndex)
OpenProject()
})
带有几个静态Li的HTML
<div class="recentProjects" id="recentProjectsId">
<li>Test 1</li>
<li>Test 2</li>
</div>
当我运行我的程序时,我的列表看起来很完美,包括我的静态li和我的动态li,但是我不能点击动态li,只能点击静态li
当我运行程序时,我的列表看起来很完美,包括我的静态li和我的动态li,但是我不能点击动态li,只能点击静态li。
这是因为,您的代码绑定click
处理程序的方式,在绑定侦听器时,它仅绑定到页面中的元素。点击监听器的设置稍微不同,它就会工作,通过利用事件委托:
$('#recentProjectsId').on('click', 'li', function () {
// snip...
});
通过为.on()
指定一个额外的selector
参数:
一个选择器字符串,用于筛选触发事件的选定元素的后代。如果选择器为空或省略,则该事件总是在到达所选元素时触发。
注意你的HTML目前是无效的。<li>
元素只在<ul>
s、<ol>
s和<menu>
s内有效。
您可以使用委托事件:
$("#recentProjectsId").on("click", "li", function() {
var projIndex = $(this).index();
console.log(projIndex)
OpenProject()
});
这里#recentProjectsId
是<li>
的父元素
相关文章:
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- AngularJs列表ng单击以选择选项转换
- 如何在单击时创建列表
- 无法单击IBM BPM列表框的下拉图像
- 如何创建背景图像列表'URL,并使用jQuery在单击函数时应用它们
- 当链接单击-jQuery时,第二层下拉列表将隐藏
- 单击ng更改列表项的活动bg颜色
- 如何使单击时的下拉列表不悬停
- 为什么jQuery下拉列表需要单击两次
- 单击旧列表只显示上次创建的id,应在单击时显示列表id
- 如何在 *ngFor 列表中显示单击的元素,使用 Angular 2 隐藏其他元素
- Metro 应用程序中的列表视图项目单击
- 引导程序在单击另一个下拉列表时关闭下拉列表
- 单击辐射网格过滤器时不会打开下拉列表
- 在 Joomla (1.7.0) 中单击时显示嵌套列表
- 动态嵌套列表:单击时插入行,在当前元素之后
- 常见问题下拉列表 - 单击时文本颜色已更改
- 基础 6 站点 - 下拉列表:单击时窗格无法打开
- 填充文本输入时,下拉列表单击 PHP PDO
- HTML 悬停按钮列表单击事件子项