jQuery.contents()
можно использовать с jQuery.filter
для поиска всех дочерних текстовых узлов. С небольшим поворотом, вы можете найти текстовые узлы внуков, а также. Рекурсия не требуется:
$(function() {
var $textNodes = $("#test, #test *").contents().filter(function() {
return this.nodeType === Node.TEXT_NODE;
});
/*
* for testing
*/
$textNodes.each(function() {
console.log(this);
});
});
div { margin-left: 1em; }
child text 1
child text 2
grandchild text 1
grand-grandchild text 1
grandchild text 2
child text 3
child text 4
Заметим, что это можно сделать, используя только функции библиотеки raphael.
Когда вы применяете функцию масштабирования к объекту raphael, он создает новый узел svg с координаты масштабируются, но, к сожалению, это не меняет свойства заливки
В любом случае, когда вы добавляете атрибут «заливка» с URL-адресом, библиотека создает шаблон.
Если это первый атрибут «заливки», который вы используете, этот шаблон называется raphael-pattern-0
, следующий называется raphael-pattern-1
и т. Д.)
Зная это, можно изменить атрибут шаблона в соответствии со спецификациями SVG
Вы можете получить атрибуты шаблона с помощью document.getElementById ("raphael-pattern- 0 ")
и измените его свойства с помощью setAttribute
Например (в зависимости от того, что вы действительно хотите сделать), это может быть что-то вроде:
var pat = document.getElementById("raphael-pattern-0");
pat.setAttribute("height", pat.getAttribute("height")*0.5);
pat.setAttribute("width", pat.getAttribute("width")*0.5);
Вы также можете изменить x
, y
, PatternUnits
и свойства patternContentUnits
.
Надеюсь, он ответит на ваш вопрос.