javascript - 克隆和附加唯一 ID 后未找到 DOM 元素

标签 javascript jquery

所以我正在创建一个随机字符串值:

var randomString = function(stringLength) {
    var i = 0;
    stringLength = stringLength || 10;
    var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
    var randomString = '';
    for (i = 0; i < stringLength; i += 1) {
        var rNum = Math.floor(Math.random() * chars.length);
        randomString += chars.substring(rNum, rNum + 1);
    }
    return randomString;
};

并将它与一个 Pane 上的列表元素相关联:

var addUniqueId = function($thumbnail) {
    var random = randomString(10);
    $thumbnail.attr('id', 'rand-' + random);
};

然后克隆它并将列表元素向右移动:

    var cloneImage = function($thumbnail) {
        addUniqueId($thumbnail);
        var $lastImgAdded = $('.js-gallery-edit-pane li').last();
        var span = $('<span />');
        span.addClass('x').text('x');
        var $clone = $thumbnail.clone(true, true).appendTo($('.js-gallery-edit-pane')).prepend(span).hide().fadeIn(200).unbind('click');
        bindRemoveHandler($clone);
    };

然后我向左侧的列表元素添加一个叠加层以将其“变灰”。此时一切正常。

从那里,用户可以通过单击图像上的“X”来删除右侧最近克隆的项目。这工作正常并删除了最近克隆的图像,但是,找不到原始叠加层。它应该与随机字符串值相关联,所以我只是在 $('.js-gallery-select-pane').find('#rand-' + string).find(' 中寻找它.overlay').remove(); 但由于某种原因它没有找到它...

知道为什么吗?

JSFiddle Demo

最佳答案

如果您在代码中放置一个alert(string),您将看到该字符串已经包含rand-,所以在您的选择器中只需执行以下操作:

$('.js-gallery-select-pane').find('#' + string).find('.overlay').remove();

这是工作 JSFiddle

关于javascript - 克隆和附加唯一 ID 后未找到 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11213439/

相关文章:

javascript - 根据文本输入更改字体大小

javascript - 在表内显示 ajax 响应

javascript - 如何将一个 var 中的值传递到另一个 var

javascript - addEventListener 触发两次

javascript - 使用 jqGrid 排序 内联编辑

javascript - 读取未知属性的名称

javascript - 使 var 可用于 javascript 中的内联函数

javascript - 不调用点击事件

javascript - Jquery - 使用 Lightbox 在类别页面上显示图像

javascript - 将 knockout 绑定(bind)与 selectOrDie 相结合