Подтвердить что ты не робот

Стиль клона в jQuery?

У меня есть <span>, называемый spn1, который имеет некоторый стиль из файла inline + CSS.

У меня есть еще один <span>, называемый spn2.

Как я могу клонировать spn1 полный стиль в spn2?

Я хочу, чтобы spn2 выглядел точно (в стиле), например spn1.

4b9b3361

Ответ 1

Взгляните на эту тему: fooobar.com/questions/25427/...
Идея состоит в том, чтобы скопировать все свойства стиля из одного элемента в другой

Или просто используйте плагин jquery.copycss.js, ответ основан на.
Использование:

$('#some-element').copyCSS('#another-element');  // copy all styles
$('#some-element').copyCSS('#another-element', ['top', 'left']);  // copy just top and left
$('#some-element').copyCSS('#another-element', null, ['top', 'left']);  // copy everything except top and left

Ответ 2

Попробуйте следующее:

$("#spn2").attr("style", $("#spn1").attr("style"))
    .addClass($("#spn1").attr("class"));

Ответ 3

jQuery не имеет прямых возможностей для этого. Вам придется использовать простой старый JavaScript, чтобы найти кросс-браузерный способ копирования по вычисленному стилю одного элемента в другой. Этот ответ имеет реализацию для потенциального решения.

Ответ 4

UPDATE

Проверьте эту скрипту: http://jsfiddle.net/9BJ5y/


Лучшая идея будет клонировать spn1 и заменить spn2 на нее.

то есть. что-то вроде:

var x = $('#spn2').html();
$('#spn2').replaceWith($('#spn1').clone().html(x).attr('id', 'spn2'));

Ответ 5

<div style='background-color:red; display:hidden' id='template'>
    <span>Something</span>
</div>

var replica=$('#template').clone();
replica
.removeAttr('id')
.css('display', 'block')
.find('span').text('Whatever');
replica.appendTo('#container');

Ответ 6

Есть ли причина, по которой вы не просто делаете .clone(true)?

http://jsfiddle.net/johncmolyneux/6Fz84/

В этом примере копируются стили inline и class, но не id (что может быть очень полезно).

Ответ 7

Попробуйте использовать это:

document.getElementById("spn2").style = document.getElementById("spn1").style;

Ответ 8

Если вы просто хотите CSS, вы можете сделать следующее:

let cssText = document.defaultView.getComputedStyle( $("#elementID"), "").cssText;

Затем вы можете применить это к любому новому элементу.

Ответ 9

Почему бы не применять какие-либо правила для обоих элементов в то время?

Что-то вроде:

$('spn1','spn2').css({color: 'red'});

Вы можете использовать несколько селекторов http://api.jquery.com/multiple-selector/