J'essaie de cloner une section spécifique d'un div style="background-color:<?php echo $mg ?>;"

Donc, ce que je veux, c'est que lorsque je clique sur un bouton spécifique, il clone uniquement la partie style de la div.

Pour le moment, je reçois cette erreur Uncaught TypeError: $(...).attr(...).clone is not a function

Voici un exemple de ce que j'ai actuellement:

$(function() {
  $(".mapei-grout-color").click(function() {
    $(this).attr('style').clone(true, true).appendTo('#the-grid');
    var $this = $(".grout-tab");
    if ($this.hasClass("clicked-once")) {
      $this.removeClass("clicked-once");
      $(".mapei").slideUp();
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
1
user5085217 14 juil. 2015 à 23:51

3 réponses

Meilleure réponse

Si je comprends bien votre question, lorsque vous cliquez sur un bouton, il reprend le style de ce bouton et le clone sur l'autre bouton.

$('#style').on('click',function(){
     document.getElementById('clone').setAttribute('style',this.getAttribute('style'));

}); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button style="background-color:blue" id="style">Click Here</button>
<button  id="clone">Clone</button>
1
Keerthi 14 juil. 2015 à 21:05

Répondez à votre commentaire ici, je pense que j'ai oublié exactement ce dont vous avez besoin.

http://jsbin.com/gezafilado/edit?html,output

clone (true) copiera l'attribut de style ainsi que tous les autres accessoires de node.

Vous faites le mauvais mouvement dans votre code - .attr ('style') renvoie une chaîne , pas un élément . Et je pense que vous voulez ajouter un nœud cloné à la grille.

Donc, au lieu de:

$(this).attr('style').clone(true, true).appendTo('#the-grid');

Tu en as besoin:

$(this).clone(true).appendTo('#the-grid').attr("style", "Your new styles here");

Ou si vous souhaitez fusionner des styles de l'objet d'origine avec de nouveaux:

var $elem = $(this).clone(true).appendTo('#the-grid');
var style = $elem.attr("style") + "Your new styles here";
$elem.attr("style", style);

J'espère que cela aide et j'ai obtenu le cas.

0
blade091 14 juil. 2015 à 22:42

Vous pouvez simplement utiliser la fonction Jquery: .attr () pour obtenir un attribut spécifique.

Par exemple:

$('div').attr('style')

Consultez ce JSFiddle pour voir un exemple en direct

MODIFIER:

Pour l'utiliser pour votre clone, vous pouvez faire quelque chose comme ceci:

$(this).clone().attr('style', $(this).attr('style')).appendTo('#the-grid');

Voir ce JSFiddle pour un exemple en direct.

1
Nemo Caligo 14 juil. 2015 à 21:45