Dado que usted está preguntando sobre la creación de un elemento a partir de la sintaxis de css, necesita usar un analizador para interpretar la sintaxis.
Aquí hay un ejemplo desde el que puede compilar. Esto coincidirá con un nombre de elemento seguido por id, clase u otros atributos. No cubrirá algunos casos extremos, pero funcionará en la mayoría de los casos.
var elem_regex = /^(\w+)?|(#|\.)([^.#\[]+)|(\[[^\]]+?\])/g
A continuación, realice una función para obtener las piezas y crear un elemento.
function elementFromSelector(str) {
var match, parts = {}, quote_re = /^("|').+(\1)$/;
while (match = elem_regex.exec(str)) {
if (match[1])
parts.name = match[1];
else if (match[2] === ".") {
if (!parts.clss)
parts.clss = [];
parts.clss.push(match[3]);
} else if (match[2] === "#")
parts.id = match[3];
else if (match[4]) {
var attr_parts = match[4].slice(1,-1).split("="),
val = attr_parts.slice(1).join("");
parts[attr_parts[0]] = quote_re.test(val) ? val.slice(1,-1) : val;
}
else throw "Unknown match";
}
if (parts.name) {
var elem = document.createElement(parts.name);
delete parts.name;
for (var p in parts)
if (p === "clss")
elem.className = parts[p].join(" ");
else
elem[p] = parts[p];
return elem;
} else throw "No element name at beginning of string";
}
A continuación, pase una cadena adecuada a la función y devolverá el elemento.
var str = 'input#the_id.firstClass.secondClass[type="text"][value="aValue"]';
var element = elementFromSelector(str);
Antes de crear el elemento, las piezas se ven así.
{
"name": "input",
"id": "the_id",
"clss": [
"firstClass",
"secondClass"
],
"type": "text",
"value": "aValue"
}
Luego usa esa información para crear el elemento que se devuelve.
así que ... básicamente quieres una implementación [zen coding] (http://code.google.com/p/zen-coding/) en javascript? –