Стиль клона в jQuery?
У меня есть <span>
, называемый spn1
, который имеет некоторый стиль из файла inline + CSS.
У меня есть еще один <span>
, называемый spn2
.
Как я могу клонировать spn1
полный стиль в spn2
?
Я хочу, чтобы spn2
выглядел точно (в стиле), например spn1
.
Ответы
Ответ 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/