Что такое jQuery для Document.createElementNS()?

Что такое jQuery для Document.createElementNS()?

function emleGraphicToSvg(aGraphicNode) {
  var lu = function luf(aPrefix){
    switch (aPrefix){
      case 'xhtml': return 'http://www.w3.org/1999/xhtml';
      case 'math':  return 'http://www.w3.org/1998/Math/MathML';
      case 'svg':   return 'http://www.w3.org/2000/svg';
      }
    return '';
    };
  var svg = document.evaluate("svg:svg",
    aGraphicNode, lu, XPathResult.FIRST_ORDERED_NODE_TYPE, null).
    singleNodeValue;
  $(svg).children().remove();
  rect = document.createElementNS(lu('svg'), "rect");
  rect.setAttribute("x", "35");
  rect.setAttribute("y", "25");
  rect.setAttribute("width", "200");
  rect.setAttribute("height", "50");
  rect.setAttribute("class", "emleGraphicOutline");
  svg.appendChild(rect);
  }

Код представляет собой упрощенный фрагмент из файла JavaScript Emle — Electronic Mathematics Laboratory Equipment emle_lab.js.

Функция поиска, luf(), отображает полную ссылку на сокращенное имя пространства имен в строке XPath и createElementNS(). Существующий svg:svg находится, удаляется и заменяется новым прямоугольником.


person CW Holeman II    schedule 03.04.2010    source источник
comment
Мне также нужно знать, что делает createElementNS(). Вот мой связанный вопрос в svg-edit: code.google. com/p/svg-edit/issues/detail?id=574   -  person marknt15    schedule 07.07.2010


Ответы (2)


Что такое jQuery для Document.createElementNS()?

Это было бы:

$(document.createElementNS('namespace', 'tag'))

Итак, в случае с ОП:

rect = $(document.createElementNS(lu('svg'), 'rect'))
    .addClass('emleGraphicOutline')
    .attr({
        x: 35,
        y: 25,
        width: 200,
        height: 50
    });

Но, конечно, не так много пользы от использования jQuery для этого. В любом случае, всегда можно обернуть узлы DOM в jQuery, например, с помощью $(rect) после создания rect с помощью vanilla JS.

Обратите внимание, что jQuery имеет другие проблемы с SVG, такие как нарушение viewBox из-за нижних регистров атрибутов, поэтому для некоторых атрибутов по-прежнему необходимо использовать простой JS.

person Jason C    schedule 21.06.2017

Для SVG я использовал jquery.svg Кита Вуда для некоторых проектов оценочного типа.

person ndim    schedule 03.04.2010
comment
SVG — это просто пример. Я предполагаю, что jquery.svg не предназначен для обработки пространств имен, отличных от svg. Я ищу, как обрабатывать пространства имен с помощью Jquery, в частности createElementNS(). - person CW Holeman II; 07.04.2010
comment
@ C.W.HolemanII Я еще не нашел хорошего способа сделать это, хотя вы всегда можете обойти jquery и использовать createElementNS() и setAttributeNS() самостоятельно, например: benknowscode.com/2012/09/ - person Daniel Kinsman; 14.01.2014