3

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

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;
};

并将其与一个窗格上的列表元素相关联:

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 演示

4

2 回答 2

4

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

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

这是工作的JSFiddle

于 2012-06-26T18:20:43.157 回答
0

您有两个元素集合,其中包含 ID 对。

不过有三个问题。前两个问题问题在这里..

您正在获取克隆“rand-etctcetc”的完整ID,然后再次将rand-添加到它“rand-rand-etcetc”,然后将其用作选择器。$('rand-rand-etcetc'). 相反,我将其更改为仅将必要的 # 添加到 id 中。您还需要删除 js-gallery-editing 类,以便让您将内容添加回右侧的列表中。

    var bindRemoveHandler = function($thumbnail) {
      $thumbnail.on('click', function() {
        $(this).fadeOut(200, function() {
          var string = $(this).attr('id');
          $('.js-gallery-select-pane').find('#' + string).removeClass('js-gallery-editing').find('.overlay').remove();
          $(this).remove();
          updatePictureCount();
        });
      });
    };

你可以在这里停下来,但是,你也有一个不同的问题。ID 属性旨在是唯一的。尝试使用自定义属性和 Jquery 属性等于选择器。你想要的查询看起来像这样..

     $('.js-gallery-select-pane').find('[pairid="' + string +'"]');

在这里,有一个小提琴:http: //jsfiddle.net/s3dCB/

于 2012-06-26T18:49:16.790 回答