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

そして、それを 1 つのペインのリスト要素に関連付けます。

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ペアを含む要素のコレクションが2つあります。

しかし、3つの問題があります。最初の2つの問題の問題はここにあります。

クローンの完全なID'rand-etctcetc'を取得し、それにrand-を再度'rand-rand-etcetcetc'して、セレクターとして使用していました。$('rand-rand-etcetcetc')。代わりに、必要な#を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 に答える