javascript - 使用 jQuery 达到最大值后删除项目

标签 javascript jquery

好的,我正在尝试克隆包含 3 个元素的表。在制作 3 个克隆后,我需要继续克隆但删除项目 .val3

$('a').click(function(e) {
    var $table = $(this).prev();
    $table.after($table.clone());
    e.preventDefault();

    var n = $(".val3").length;

    if (n > 3) {
        if (!$(".val3").hasClass("max3")) {
            $(".val3").remove();
        }
    } else {
        $(".val3").addClass("max3");
    }
});

<table border="1"> 
<tr> 
  <td>
  <div class="val1">val 1</div>
  <div class="val2">val 2</div>
  <div class="val3">val 3</div>
  </td> 
</tr> 
</table>
<a href="#">copy</a>

我决定在前 3 个类中添加一个类,然后检查该类是否不存在,然后删除该 div。我想我迷失在自己的逻辑中......

这是jfiddle I put as a demo .

最佳答案

使用 .splice 方法删除除前三个元素之外的所有 .val3 元素。

$('a').click(function(e) {
    var $table = $(this).prev();
    $table.after($table.clone());
    e.preventDefault();
    $('.val3').slice(3).remove()
});

如果您想要除最后三个元素之外的所有元素,请使用 .slice(0, length-3),如下面的代码所示。 fiddle :http://jsfiddle.net/uR7Aw/1/

$('a').click(function(e) {
    var $table = $(this).prev();
    $table.after($table.clone());
    e.preventDefault();
    var length = $('.val3').length;
    if(length >= 3) $('.val3').slice(0, length - 3).remove();
});

编辑

您还可以在已存在 3 行以上时阻止添加更多 .val3 行,而不是在追加后删除该行:

$('a').click(function(e) {
    e.preventDefault();
    var $table = $(this).prev();
    var $clone = $table.clone();

    var length = $('.val3').length;
    if(length >= 3) $('.val3', $clone).remove();
    //Equivalent to $clone.find('.val3').remove();

    $table.after($clone);
});

关于javascript - 使用 jQuery 达到最大值后删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7909133/

相关文章:

javascript - 如何过滤 JQuery 对象?

javascript - 缩小/破坏 JSX 中的 CSS 类名和 Webpack 的 CSS 输出(或其他编程方式)

javascript - 为什么我的对象显示为 "[object Object]"?

javascript - 第二次单击时删除附加数据

javascript - jquery的图像预加载问题

jquery - 全屏背景图像

javascript - 如何创建网站的 waterfall/时间线?

javascript - 如何在 React State 中更新数组的奇异值

javascript - 如何让 javascript 响应 php 事件?

javascript - 如何从 JavaScript 文件中的 JSON 文件访问数据,然后将其打印到 HTML 页面?