2016-05-17 3 views
1

Можете ли вы помочь мне решить небольшую проблему?Добавить кнопку в новый элемент

У меня есть набор цифр. После щелчка, выбранная фигура скопирована в другой div (корзина). В корзине должна появиться новая кнопка. Но в моем решении этот buttom появился снова после каждого щелчка. Как я могу это исправить? Спасибо и извините за мой английский

Этот код

<div class="products__list__items"> 
    <div class="products__list__item row"> 
     <figure class="product first" data-class="first"> 
      <img src="https://www.tineye.com/images/robot-search-header.png" alt="product1" class="product__img"> 
      <figcaption class="product__title">One</figcaption> 
     </figure> 
    </div> 
    <div class="products__list__item row"> 
     <figure class="product first" data-class="first"> 
      <img src="https://www.tineye.com/images/robot-search-header.png" alt="product1" class="product__img"> 
      <figcaption class="product__title">Two</figcaption> 
     </figure> 
    </div> 
    <div class="products__list__item row"> 
     <figure class="product first" data-class="first"> 
      <img src="https://www.tineye.com/images/robot-search-header.png" alt="product1" class="product__img"> 
      <figcaption class="product__title">Three</figcaption> 
     </figure> 
    </div>   
</div> 
<div class="basket"> 

</div> 

Jquery код

$(document).ready(function() { 
    var addToBasket = function() { 
     var that = $(this); 
     if(!that.hasClass('added')) { 
      that.clone().appendTo($('.basket')); 
      that.addClass('added'); 
     }; 
     $('.basket .product').append('<button>x</button>'); 
    }; 
    $(document).on("click",".products__list__item .product",addToBasket); 
}); 

Здесь скрипку https://jsfiddle.net/fhxx9hm3/

+0

Нужна ли вам [это] (https://jsfiddle.net/8rs7zu5x/) – Satpal

+0

Вы хотите только один раз добавить кнопку? Если это так, вы можете использовать '.one()' JQuery (это похоже на '.on()', но будет выполняться только один раз для элемента) – DBS

ответ

1

Вы должны добавить кнопку только один раз для каждого продукта.

var addToBasket = function() { 
    var that = $(this); 
    if(!that.hasClass('added')) { 
     //Append the button here 
     that.clone().add('<button>x</button>').appendTo($('.basket')); 
     //Or 
     //that.clone().append('<button>x</button>').appendTo($('.basket')); 
     that.addClass('added'); 
    }; 
    //Following statement is not required 
    //$('.basket .product').append('<button>x</button>');  
}; 

DEMO

+0

Спасибо! Это мне очень помогло! – Hlushenok

Смежные вопросы