JQuery клон только один раз - PullRequest
       10

JQuery клон только один раз

0 голосов
/ 25 апреля 2010

У меня есть серия таких дивов:

<div id="available-posts">
    <div class="post" id="unique_id">
      <a href="#" class="addme">Add</a> Some text
    </div>

    <div class="post" id="unique_id">
      <a href="#" class="addme">Add</a> Some text
    </div>
</div>

unique_id - это разное число для каждого из div.

Теперь у меня есть новый пустой div вроде этого

<div class="related-posts"></div>

И я там клонирую предметы.

Дело в том, что я хочу проверить, клонирован ли уже элемент. Если это так, я хочу остановить его от клонирования снова.

Вот как я клонирую предметы:

    // clone it
$('.addme').live('click', function() {
        $(this).parents('div.thepost').clone().fadeIn('normal').appendTo('#related-posts').find('a.addme').html('Remove').removeClass('addme').addClass('removeme');
        return false;
}); 

// remove it
$('.removeme').live('click', function() {
        $(this).parents('div.thepost').fadeOut('normal', function() {$(this).remove(); });
        return false;
}); 

Другими словами, я хочу, чтобы клонированный список содержал только уникальные элементы. Не к примеру 2 клона одного и того же поста.

* edit: я использую live, потому что первый список (доступные посты) заполняется через AJAX-вызов.

1 Ответ

1 голос
/ 25 апреля 2010

Просто проверьте, есть ли уже div с таким идентификатором:

$('.addme').live('click', function() {
        var post = $(this).parents('div.thepost');
        var postId = post.attr("id");
        if ( $("#related-posts").find( "#" + postId ).size() ) return;

        post.clone().fadeIn('normal').appendTo('#related-posts').find('a.addme').html('Remove').removeClass('addme').addClass('removeme');
        return false;
}); 
...