javascript - clone() 后 length 不起作用

标签 javascript jquery

这是我的 jsfiddle ,我想:

  • 点击.original div 后,复制它,其中副本将有一个类.black,而不是.original
  • 如果 .container 包含多个 .black 类的 div,则删除 .original div>

到目前为止我让前者工作,但后者似乎不工作。 是因为内容是用 jQuery 创建的吗?

<div class="container">
    <div class="original"></div>
</div>
.original {
    display: block;
    height:50px;
    width: 50px;
    margin: 10px;
    background: red;
}
.black {
    display: block;
    height:50px;
    width: 50px;
    margin: 10px;
    background: black;
}
$('.container').on('click', '.original', function () {
    $(this).clone(true).addClass('black').insertAfter($(this)).removeClass('original');
});
$('.container').each(function () {
    console.log($('.black').length);
    if ($('.black').length > 4) {
        $('.original').fadeOut(600);
    }
});

最佳答案

您需要将检查移动到点击处理程序内部,否则它只会在开始时运行一次。

$(document).ready(function () {
    $('.container').on('click', '.original', function () {
        $(this).clone(true).addClass('black').insertAfter($(this)).removeClass('original');
        var itemsNumber = $('.black').length;
        $('.container').each(function () {
            if (itemsNumber > 4) {
                $('.original').fadeOut(600);
            }
        });
    });
});

jsfiddle.net/2U7W6/4

关于javascript - clone() 后 length 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23995479/

相关文章:

javascript - backbone.js 的先前属性不是持久的

javascript - 将库导入到 vue.js 的单个文件组件中

javascript - 自定义元素从输入类型范围扩展

jQuery - 根据当前 url 检查导航选择列表 url 值并设置为选定

javascript - 如何在页面加载时检查 radio

php - 如何检查 url 在 jQuery 中是否没有查询字符串?

JavaScript - 在回调中设置对象属性

javascript - 如何在 Ajax $.getJSON() 中获取 Json 作为键和值?

jquery - 延迟自动打开 URL

jquery - 我缺少什么? jQuery 和 Dojo 中的链接 promise