首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

函数在追加li子代后停止工作(按钮)

函数在追加li子代后停止工作是因为在追加子代后,新添加的li元素没有绑定相应的事件处理程序。要解决这个问题,可以通过以下步骤:

  1. 确保在追加li子代后重新绑定相应的事件处理程序。例如,如果按钮的点击事件是触发函数的关键,那么在追加li子代后,应重新为按钮添加点击事件的处理程序。
  2. 通过事件委托的方式绑定事件处理程序。事件委托是一种将事件处理程序绑定到父元素上,以便处理后代元素事件的方法。这样即使追加了新的li子代,事件处理程序仍然有效。例如,可以将事件绑定到父元素ul上,然后通过事件冒泡的方式捕获触发事件的子元素li。

下面是一个示例代码来解决这个问题:

HTML:

代码语言:txt
复制
<button id="add-btn">追加li子代</button>
<ul id="list">
  <li>第一个li子代</li>
  <li>第二个li子代</li>
  <li>第三个li子代</li>
</ul>

JavaScript:

代码语言:txt
复制
// 获取按钮和ul元素
var addButton = document.getElementById("add-btn");
var list = document.getElementById("list");

// 绑定按钮点击事件处理程序
addButton.addEventListener("click", function() {
  // 创建新的li元素
  var newLi = document.createElement("li");
  newLi.textContent = "新添加的li子代";
  
  // 将新的li元素追加到ul中
  list.appendChild(newLi);
  
  // 绑定新添加的li元素的事件处理程序
  newLi.addEventListener("click", function() {
    console.log("点击了新添加的li子代");
  });
});

在上面的代码中,通过addEventListener方法为按钮添加了一个点击事件处理程序。当按钮被点击时,会创建一个新的li元素,并将其追加到ul中。同时,为新添加的li元素也绑定了一个点击事件处理程序。这样无论是原来存在的li元素还是新添加的li元素,点击时都会输出相应的消息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【领会要领】web前端-轻量级框架应用(jQuery基础)

// 入口函数如下 window.onload = function(){ // 执行代码 } JavaScript的入口函数与jquery入口函数: jquery的入口函数是在HTML所有标签都加载后执行...") 匹配 id 为null的所有li元素 子代选择器 $("parent>child") 匹配所有指定"parent"元素中指定"child"的直接子元素 $("#标签id值") // 原生 var...$("#test li").css("border", "2px solid red"); 子代选择器 $("选择器1>选择器2>...")...type="text/JavaScript"> $(function(){ //一定会在页面加载完成后运行 }) 将jquery函数代码放到这个函数就可以等到页面加载结束再运行...); $("ul").append($li2); }); }); 插入HTML元素 append() 向每个匹配的元素内部追加内容 appendTo() 将所有匹配的元素追加到另一个指定的元素集合中

2.2K20
  • JQuery

    我的JQuery入门笔记,持续更新…… JQuery是一个封装了很多方法的js库 入口函数 写入口函数防止页面上的标签还没有被渲染出来,js代码就执行了 不同于js,JQuery可以有多个入口函数...') // 交集选择器,没有分隔 $('div.class') 层级选择器 // 子代选择器 $('ul>li') // 后代选择器 $('ul li') 过滤选择器 可以从获取到的元素中过滤出索引号对应的元素...// 获取索引号为2的元素 $('li:eq(2)') // 获取索引号为奇数的元素 $('li:odd') // 获取索引号为偶数的元素 $('li:even') 筛选选择器 是一系列方法 事件...mouseover mouseover事件在鼠标移动到选取的元素及其子元素上时触发 mouseseenter mouseseenter事件只在鼠标移动到选取的元素上时触发 类操作 // 添加类 addClass...,但是创建的元素只在内存中,如果要在页面上显示,就要追加 $() 你好,我是旧内容。

    17160

    jQuery 快速入门教程

    因此,我们一般会将自己的jQuery代码写在ready()事件函数中。ready()函数的作用相当于window.onload,它用于在当前文档加载准备就绪后执行对应的函数。...$(document).ready(function(){ // 在这里编写我们希望在DOM准备就绪后执行的代码 }); 如果你觉得这种写法有点麻烦,你还可以使用下面这种简写的方法...: // $( function ) 是 $(document).ready( function ) 的简写形式 $( function(){ // 在这里编写我们希望在DOM准备就绪后执行的代码...} ); jQuery的ready()函数可以重复调用,绑定的回调函数将在DOM准备就绪后按照绑定顺序依次执行。...( $B ); // 在$A内部的末尾位置追加$B $A.appendTo( $B ); // 将$A追加到$B内部的末尾位置 $A.prepend( $B ); // 在$A内部的开头位置追加$B

    13.7K30

    jQuery 教程

    在页面中选取所有 元素:$(“p”) 实例:用户点击按钮后,所有 元素都隐藏: $(document).ready(function(){ $("button").click(function...实例: 在元素上移动鼠标。 选取单选按钮 点击元素 在事件中经常使用术语”触发”(或”激发”)例如: “当您按下按键时触发 keypress 事件”。...}); 常用的 jQuery 事件方法 $(document).ready() $(document).ready() 方法允许我们在文档完全加载完后执行函数。...该事件方法在 jQuery 语法 章节中已经提到过。 click() click() 方法是当按钮点击事件被触发时会调用一个函数。 该函数在用户点击 HTML 元素时执行。...添加在新元素文本后。 jQuery after() 和 before() 在选取元素的前后添加 HTML 元素。

    17K20

    前端(四)-jQuery

    ) 在动画效果结束后执行函数 hide() 立刻隐藏 hide(毫秒数) 慢慢隐藏 hide(毫秒数,函数) 在动画效果结束后执行函数 toggle() 方法等于这两个方法 方法 说明 toggle...() 立即显示和隐藏 toggle(毫秒数) 慢慢显示和隐藏 toggle(毫秒数,函数) 在动画效果结束后执行函数 参数:可以为任意毫秒数或,slow,normal,fast; 4.4.2 改变元素的透明度...(淡入淡出) 方法 说明 fadeIn() 立即淡入 fadeIn(毫秒数) 淡入 fadeln(毫秒数,函数) 在动画效果结束后执行函数 fadeOut() 立即淡出 fadeOut(毫秒数) 淡出...fadeOut(毫秒数,函数) 在动画效果结束后执行函数 参数:可以为任意毫秒数或,slow,normal,fast; 4.4.3 改变元素高度(收缩) 方法 说明 slideDown() 立即延伸...slideDown(毫秒数) 慢慢延伸 slideDown(毫秒数,函数) 在动画效果结束后执行函数 slideUp() 立即收缩 slideUp(毫秒数) 慢慢收缩 slideUp(毫秒数,函数) 在动画效果结束后执行函数

    8.6K30

    学习jQuery这一篇就够了

    对于 .after (),选择表达式在函数的前面,参数是将要插入的内容。对于 .insertAfter (),刚好相反,内容在方法前面,它将被放在参数里元素的后面。...对于 .before (),选择表达式在函数前面,参数是将要插入的内容。对于 .insertBefore (),刚好相反,内容在方法前面,它将被放在参数里元素的前面。...需求描述:为 ul 列表创建一个深克隆并追加到 body 后 li>列表项1li> li>列表项2li> li>列表项3li> var...需求描述:为按钮绑定一个单击函数,然后点击按钮,在控制台输出 “按钮被单击了” 按钮 $('button').click(function () { console.log...需求描述:为按钮绑定一个双击函数,然后双击按钮,在控制台输出 “按钮被单击了” 按钮 $('button').dblclick(function () { console.log

    1K50

    SSM整合案例

    例如点击一个按钮,向一个div追加5条记录,那么下一次点击按钮,又会调用一次ajax请求,向里面追击五条与先前重复的记录,因此每一次在追加之前,需要先将之前追加的记录或者追加的标签属性清除 jquery...例如点击一个按钮,向一个div追加5条记录,那么下一次点击按钮,又会调用一次ajax请求,向里面追击五条与先前重复的记录,因此每一次在追加之前,需要先将之前追加的记录或者追加的标签属性清除 ---- jquery...//修改员工 //1.我们是按钮创建之前就绑定了click,所以绑定不上事件 //2.1.我们可以在创建按钮的时候绑定,但是很麻烦 //2.2.我们可以live函数,但是新版...,标签体中不会显示出现追加的内容,但是实际已经存在,那么下一次再次调用ajax时,又会重复上一次的追加行为,那么页面效果就是内容重复追加,解决办法就是在每次调用ajax之前,先将之前重复追加的内容清除掉...,例如给删除按钮增添一个自定义属性保存当前员工的id,方便一会通过在按钮点击事件中获取到id值,从而通过ajax返回给服务器端,进行删除逻辑操作 使用ajax时,在获取到服务器端发送来的数据后,可以在成功的回调函数中

    4.1K21

    CSS规范--BEM入门

    考虑以下场景: 场景一:开发一个弹窗组件,在现有页面中测试都没问题,一段时间后,新需求新页面,该页面一打开这个弹窗组件,页面中样式都变样了,一查问题,原来是弹窗组件和该页面的样式相互覆盖了,接下来就是修改覆盖样式的选择器...一段时间后,新同事接手跟进需求,对样式进行修改,由于选择器是一连串的结构逻辑,看不过来,嫌麻烦,就干脆在样式文件最后用另一套选择器,加上了覆盖样式...接下来又有新的需求...最后的结果,一个元素对应多套样式...因为命名长,我们是不是可以用子代选择器来代替BEM命名?这样至少在HTML编写时,让HTML标签看起来美观一点。 3. 什么时候用BEM?...-- ... --> 其次,有悖BEM思想,BEM是不考虑结构的,比如上面的分页按钮,即使它是在ul列表里面,它的命名也不应该考虑其父级元素。...关于子选择器 子代选择器的方式是,通过组件的根节点的名称来选取子代元素。按照这个思路,分页按钮样式可以这么写: <!

    1.2K20
    领券