javascript - 为什么这个 jquery 函数会自行循环?
问题描述
好吧,我在表格中显示了一些文本,并添加了一个“阅读更多”按钮来展开文本。但是当我单击此按钮时,我想同时显示“div#selectedItem”中的整个文本。如果为另一个文本单击“阅读更多”按钮,我想用当前文本替换该文本。这里的问题是当我调试我的代码时,我看到当断点到达函数的末尾时,它又从头开始。为什么会这样?
$(".table tbody").on("click",
".read-more",
function readMore(e) {
var currentRow = $(this).closest("tr");
var cellText = currentRow.find("td:eq(1)").text();
$(this).siblings(".more-text").contents().unwrap();
$(this).remove();
e.preventDefault();
if (clickedTimes > 0)
$("div#selectedItem").html("");
$("div#selectedItem").prepend(cellText).html();
clickedTimes++;
setTimeout(readMore, 1000);
});
我希望我的功能将独立地为每次点击工作。
解决方案
因为在每次调用结束时,您都有一个setTimeout
which 会重新调用该函数。删除它,您的代码将不再递归循环:
$(".table tbody").on("click", ".read-more", function readMore(e) {
var currentRow = $(this).closest("tr");
var cellText = currentRow.find("td:eq(1)").text();
$(this).siblings(".more-text").contents().unwrap();
$(this).remove();
e.preventDefault();
if (clickedTimes > 0)
$("div#selectedItem").html("");
$("div#selectedItem").prepend(cellText).html();
clickedTimes++;
});
推荐阅读
- clojure - 使用 clj-http 发送 gzip 请求
- c++ - 在cstlib中用#include替换#include_next是否安全
- bootstrap-tour - Bootstrap 导览背景在步骤之间闪烁
- java - 用于将 SELECT 的结果插入 Spring Boot JPA Hibernate 中的表的自定义 SQL 查询
- delphi - 为什么在Delphi中BitMap的传输顺序相反?
- powerbi - 如何查找由不同列排序的最后一个值
- activejdbc - ActiveWeb - 渲染父属性值
- angular - NGINX HTTP2 推送 - Angular
- linux - 带有访问令牌的 git pull,带有用户名/密码的 git push
- angular - Why my file app.component.html is not working?