javascript - 尝试将元素动态添加到 <ul> 标记时,单击事件不起作用

标签 javascript jquery html

我正在尝试创建一个列表,在您单击该列表后,会在其中添加新的 li 标记,但单击 li 标记后没有任何反应。 当我尝试这样做时:

$('ul').click(function(){

    $("ul").append('<li>aaaaaaaaaaa</li>');
    }).children().click(function(e) {
       return false;
    });

一切似乎都很好。当我单击列表主体时,会添加新元素,而当我单击先前声明的 li 标记时,不会发生任何情况。但是,单击新添加到列表中的元素后,将添加另一个新元素。 这是为什么?我能做什么?

最佳答案

您的代码仅将 .click(function(e) { return false; }); 处理程序应用于应用其他点击处理程序时已存在的子级。

jQuery 支持动态事件绑定(bind)方法,该方法会自动将处理程序绑定(bind)到新节点:

$('ul')
.on('click', function(e) {
   $(this).append('<li>aaaaaaaaaaa</li>');
})
.on('click', 'li', function(e) {
   return false;
});

这应该将一个点击事件绑定(bind)到ul,从而创建一个新的li,同时还为该下的所有li绑定(bind)一个事件处理程序ul 无论它们是否动态创建。

您可以在 jQuery API documentation 中阅读有关 .on 方法的更多信息。 .

$('ul')
.on('click', function(e) {
   $(this).append('<li>aaaaaaaaaaa</li>');
})
.on('click', 'li', function(e) {
   return false;
});
ul {
    border: 1px solid red;
}

li {
    border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
    <li>A</li>
    <li>B</li>
    <li>C</li>
</ul>

关于javascript - 尝试将元素动态添加到 <ul> 标记时,单击事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34010729/

相关文章:

javascript - 滚动时将对象置于屏幕中心

html - 响应式 gif 集成问题

javascript - X 次的多个字符

javascript - 返回所有重复项,但在具有多个值的对象数组中第一次出现除外

jquery - 鼠标悬停时 :Hide original url and show other

Javascript 日期范围 slider 在 Chrome 中工作,但在其他浏览器中不起作用?

javascript - 如何在 Visual Studio Code 中使用 TypeScript 和 JavaScript 禁用自动导入的自动分号?

javascript - 在 React 组件中重新附加 DOM 元素

javascript - 在 FTP 上实时缩小 CSS 和 JS

html - CSS Grid 的问题创建一个简单的 CSS 布局,其中行和多个 div 居中