2015-07-14 3 views
2

Я пытаюсь клонировать определенный фрагмент DIV style="background-color:<?php echo $mg ?>;"Jquery Clone элемент Стиль

Так что я хочу, чтобы это произошло, когда я нажимаю на определенную кнопку он клонирует только часть стиля дел.

На данный момент я получаю эту ошибку Uncaught TypeError: $(...).attr(...).clone is not a function

Вот пример того, что я в настоящее время:

$(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>

+0

Вы хотите, чтобы стиль кнопки был извлечен из него? – Keerthi

+0

Да, когда этот элемент щелкнут, он клонирует встроенный стиль и помещает его туда, где я хочу. Все остальное, что я знаю, как это сделать, я просто не знаю, как клонировать конкретную часть div, в этом случае это встроенный стиль. –

+0

Я не могу понять, чего вы хотите на самом деле, но это может вам помочь ** $ (селектор) .attr ('style') **. которые возвращают встроенный стиль конкретного div. –

ответ

1

Если я правильно понял ваш вопрос, когда вы нажимаете на одну кнопку, он берет стиль этой кнопки и клонирует ее на другую кнопку.

$('#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>

+0

Использование jquery приведет к уменьшению кода до: '$ ('# clone'). attr ('style', $ (this) .attr ('style'));' –

1

Вы можете просто использовать Jquery: .attr() функцию получить конкретный атрибут.

Например:

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

Проверить this JSFiddle, чтобы увидеть живой пример

EDIT:

Чтобы использовать это для вашего клона, вы могли бы сделать что-то вроде этого:

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

См. this JSFiddle для живого примера.

+0

обновленный вопрос –

+0

См. Обновленный ответ –

+0

Привет, Нанаси, Это не совсем так, что случилось, так это просто взять полный div и поместить его в # сетку вместо того, чтобы просто взять атрибут стиля и добавление его в # the-grid. –

0

Ответ на ваш комментарий здесь, я думаю, что я проглядел, что вам нужно точно.

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

клон (правда) будет копировать атрибут стиля, а также все другой реквизит узла.

Вы делаете неверный шаг в коде - .attr («стиль») возвращает строку , а не элемент. И я думаю, вы хотите добавить клонированный узел в сетку.

так, вместо того, чтобы:

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

вам это нужно:

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

или если вы хотите объединить стили из оригинального объекта с новыми:

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

Надежда это помогает, и я получил дело.

+0

So если im не использовать клон, как я могу просто присвоить ему стиль? –

+0

То же самое, вместо добавления встроенного стиля для цвета фона в div на # the-grid, он просто помещает весь div внутри # the-grid –