2015-12-07 48 views
0

我的XML看起来是这样的:每一套前使用jQuery的另一个元素中首次出现前插入元素/文

<entry> 
<br> 
<abc></abc> 
<xyz></xyz> 
<example></example> 
<example></example> 
<example></example> 
</entry> 
<entry> 
<br> 
<abc></abc> 
<xyz></xyz> 
</entry> 
<entry> 
<br> 
<abc></abc> 
<xyz></xyz> 
<example></example> 
<example></example> 
</entry> 

我的目标是(例如,<example_header>Examples</example_header>)以及文本添加新元素的<example>标签。正如你所看到的,并不是所有的<entry>都会有相同数量的<example>标签,并不是所有的都会有。我曾尝试以下的JQuery黑客:

$("entry").each(function() { 
 
    $("<ex_header>").insertBefore('example:first'); 
 
}); 
 

 
$("<hr class='dict-divider'>").insertAfter("entry"); 
 
      $("<br>").insertAfter("hw"); 
 
      $("<br>").insertAfter("pr"); 
 
      $("<br>").insertAfter("ure"); 
 
      $("<br><br>").insertAfter("fl"); 
 
      $("<br>").insertAfter("dt"); 
 
      $("<br>").insertBefore("vi"); 
 
      $("<br>").insertAfter("example"); 
 
      $("<br>").insertAfter("syno"); 
 
      $("<br>").insertAfter("anto"); 
 
      $("<br>").insertAfter("suggestion");
hw { 
 
\t color: #939393; 
 
\t font-weight: bold; 
 
\t font-size: 350%; 
 
\t text-shadow: 0px 2px 0px #fff; 
 
} 
 
fl, vt, spl, il { 
 
\t color: #939393; 
 
\t font-style: italic; 
 
} 
 
synn, antt { 
 
\t color: #939393; 
 
\t font-weight: bold; 
 
\t font-size: 150%; 
 
\t text-shadow: 0px 2px 0px #fff; 
 
} 
 
.dict_source { 
 
\t float: right; 
 
\t color: #939393; 
 
\t font-size: 100%; 
 
\t text-shadow: 0px 2px 0px #fff; 
 
} 
 
sound { display: none; } 
 
dx { display: none; } 
 
sx, va, ahw, if, rv { font-weight: bold; color: #469046; } 
 
ssl { font-style: italic; color: #883232; float: left; } 
 
sn { font-weight: bold; float: left; } 
 
svr { float: left; } 
 
syno, anto { font-weight: bold; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<entry_list version="1.0"> 
 
<entry id="andar[1]"> 
 
<hw hindex="1">andar</hw> 
 
<sound>andar01sp.wav</sound> 
 
<dx> 
 
<dxt>6</dxt> 
 
</dx> 
 
<fl>intransitive verb</fl> 
 
<def> 
 
<sn>1</sn> 
 
<dt> 
 
<sx>caminar</sx> 
 
:to 
 
<ref-link>walk</ref-link> 
 
</dt> 
 
<sn>2</sn> 
 
<dt> 
 
<sx>ir</sx> 
 
:to 
 
<ref-link>go</ref-link> 
 
, to 
 
<ref-link>travel</ref-link> 
 
</dt> 
 
<sn>3</sn> 
 
<dt> 
 
<sx>funcionar</sx> 
 
:to 
 
<ref-link>run</ref-link> 
 
, to 
 
<ref-link>function</ref-link> 
 
<vi>el auto anda bien : the car runs well</vi> 
 
</dt> 
 
<sn>4</sn> 
 
<dt> 
 
:to 
 
<ref-link>ride</ref-link> 
 
<vi>andar a caballo : to ride on horseback</vi> 
 
</dt> 
 
<sn>5</sn> 
 
<dt> 
 
:to 
 
<ref-link>be</ref-link> 
 
<vi>anda sin dinero : he's broke</vi> 
 
</dt> 
 
</def> 
 
<def> 
 
<vt>vt</vt> 
 
<dt> 
 
:to 
 
<ref-link>walk</ref-link> 
 
, to 
 
<ref-link>travel</ref-link> 
 
</dt> 
 
</def> 
 
<example> 
 
su andar era firme e iba a menudo con las manos en los bolsillos, sin demasiada prisa, como un hombrecito 
 
</example> 
 
<example> 
 
el refrán dice: “dime con quién andas y te diré quién eres” 
 
</example> 
 
<example> 
 
me pareció que andaba en tus cosas y le pregunté qué estaba haciendo 
 
</example> 
 
<example> 
 
anduvo con él un tiempo, pero no funcionaban como pareja y decidieron dejarlo 
 
</example> 
 
<example> 
 
a estas alturas y con lo que nos conocemos, no vamos a andarnos con remilgos 
 
</example> 
 
<example> 
 
si vas a intervenir, ándate con cuidado, no vayas a meter la pata 
 
</example> 
 
<example> 
 
se pueden escuchar los pasos de la gente que anda en el piso de arriba 
 
</example> 
 
<example> 
 
yo diría que esta mujer ya anda en los cincuenta años 
 
</example> 
 
<example> 
 
desde que ha intervenido el mediador, las negociaciones andan mejor 
 
</example> 
 
<example> 
 
para una buena circulación de la sangre se recomienda andar 
 
</example> 
 
<example>¿Cómo anda hoy el tiempo? ¿Lloverá?</example> 
 
<example> 
 
las llaves deben andar por alguna parte, búscalas mejor 
 
</example> 
 
<example>desde que aprobó los exámenes anda bien contento</example> 
 
<example>¡Ándale!, ahora sí que nos han descubierto</example> 
 
<example> 
 
anda, ven a sentarte aquí a mi lado y deja de quejarte 
 
</example> 
 
<example> 
 
en el Camino de Santiago se anda una media de 30 km diarios 
 
</example> 
 
<example> 
 
una botella de vino de las nuestras ya anda por los 5 pesos 
 
</example> 
 
<example> 
 
el hijo mayor de Juan debe andar por los veinte años 
 
</example> 
 
<example>¡Ándale!, ya va siendo hora de que te levantes</example> 
 
<example> 
 
tiene unos andares muy vistosos y un pelo que parece seda 
 
</example> 
 
<example>¿Sabes dónde anda David? No lo encuentro</example> 
 
<example> 
 
el viajero que huye, tarde o temprano detiene su andar 
 
</example> 
 
<example>giré la llave de contacto y el coche no andaba</example> 
 
<example> 
 
el coche que te gusta debe andar por los 18 000 euros 
 
</example> 
 
<example>mis relaciones con el jefe andan peor cada día</example> 
 
<example>tenemos mucho trabajo, así que ¡andando!</example> 
 
<example>¡Ándale!, ese vestido te queda perfecto</example> 
 
<example>para que ande el reloj, es necesario darle cuerda</example> 
 
<example>anda, márchate o perderás el tren</example> 
 
<example>anduvo durante el verano por el sur de Italia</example> 
 
<example>no andes con esa navaja que te puedes cortar</example> 
 
<example>anda con la moto por la urbanización</example> 
 
<example>las cosas no andan muy bien este año</example> 
 
<example>¡Ándale! chulita, dame un beso</example> 
 
<example>¿Por dónde anda este pueblo?</example> 
 
<example>anduvo un tiempo metido en política</example> 
 
<example>anda por ahí divirtiéndose</example> 
 
<example>anda con problemas en la vesícula</example> 
 
<example>anda a que te devuelvan bien el cambio</example> 
 
<example>andaba en trámites de divorcio</example> 
 
<example>anda para adentro, que te vas a helar</example> 
 
<example>¡Anda! Se cree que somos tontos</example> 
 
<example>andaba marzo cuando lo conocí</example> 
 
<example>andaba por la calle sin rumbo fijo</example> 
 
<example>¡Anda, si ya son las cuatro!</example> 
 
<example>¡Andando! Que llegamos tarde</example> 
 
<example>andar en bicicleta</example> 
 
<example>andar a garrotazos</example> 
 
<example>andaba fastidiado</example> 
 
<example>andar a caballo</example> 
 
<example>andar resfriado</example> 
 
<example>las horas andan</example> 
 
<example>andar deprisa</example> 
 
<example>andar a gatas</example> 
 
<synant> 
 
<synonym> 
 
<syno>ir</syno> 
 
<syno>venir</syno> 
 
<br/> 
 
<syno>funcionar</syno> 
 
<syno>marchar</syno> 
 
<br/> 
 
<syno>recorrer</syno> 
 
<syno>caminar</syno> 
 
<syno>pasear</syno> 
 
<syno>patear</syno> 
 
<syno>desviarse</syno> 
 
<br/> 
 
</synonym> 
 
<antonym> 
 
<anto>pararse</anto> 
 
<anto>detenerse</anto> 
 
<anto>desandar</anto> 
 
<br/> 
 
</antonym> 
 
</synant> 
 
<synant> 
 
<synonym> 
 
<syno>ir</syno> 
 
<syno>venir</syno> 
 
<br/> 
 
<syno>funcionar</syno> 
 
<syno>marchar</syno> 
 
<br/> 
 
<syno>recorrer</syno> 
 
<syno>caminar</syno> 
 
<syno>pasear</syno> 
 
<syno>patear</syno> 
 
<syno>desviarse</syno> 
 
<br/> 
 
</synonym> 
 
<antonym> 
 
<anto>pararse</anto> 
 
<anto>detenerse</anto> 
 
<anto>desandar</anto> 
 
<br/> 
 
</antonym> 
 
</synant> 
 
</entry> 
 
<entry id="andar[2]"> 
 
<hw hindex="2">andar</hw> 
 
<sound>andar02sp.wav</sound> 
 
<fl>masculine noun</fl> 
 
<def> 
 
<dt> 
 
: 
 
<ref-link>walk</ref-link> 
 
, 
 
<ref-link>gait</ref-link> 
 
</dt> 
 
</def> 
 
<example> 
 
su andar era firme e iba a menudo con las manos en los bolsillos, sin demasiada prisa, como un hombrecito 
 
</example> 
 
<example> 
 
el refrán dice: “dime con quién andas y te diré quién eres” 
 
</example> 
 
<example> 
 
me pareció que andaba en tus cosas y le pregunté qué estaba haciendo 
 
</example> 
 
<example> 
 
anduvo con él un tiempo, pero no funcionaban como pareja y decidieron dejarlo 
 
</example> 
 
<example> 
 
a estas alturas y con lo que nos conocemos, no vamos a andarnos con remilgos 
 
</example> 
 
<example> 
 
si vas a intervenir, ándate con cuidado, no vayas a meter la pata 
 
</example> 
 
<example> 
 
se pueden escuchar los pasos de la gente que anda en el piso de arriba 
 
</example> 
 
<example> 
 
yo diría que esta mujer ya anda en los cincuenta años 
 
</example> 
 
<example> 
 
desde que ha intervenido el mediador, las negociaciones andan mejor 
 
</example> 
 
<example> 
 
para una buena circulación de la sangre se recomienda andar 
 
</example> 
 
<example>¿Cómo anda hoy el tiempo? ¿Lloverá?</example> 
 
<example> 
 
las llaves deben andar por alguna parte, búscalas mejor 
 
</example> 
 
<example>desde que aprobó los exámenes anda bien contento</example> 
 
<example>¡Ándale!, ahora sí que nos han descubierto</example> 
 
<example> 
 
anda, ven a sentarte aquí a mi lado y deja de quejarte 
 
</example> 
 
<example> 
 
en el Camino de Santiago se anda una media de 30 km diarios 
 
</example> 
 
<example> 
 
una botella de vino de las nuestras ya anda por los 5 pesos 
 
</example> 
 
<example> 
 
el hijo mayor de Juan debe andar por los veinte años 
 
</example> 
 
<example>¡Ándale!, ya va siendo hora de que te levantes</example> 
 
<example> 
 
tiene unos andares muy vistosos y un pelo que parece seda 
 
</example> 
 
<example>¿Sabes dónde anda David? No lo encuentro</example> 
 
<example> 
 
el viajero que huye, tarde o temprano detiene su andar 
 
</example> 
 
<example>giré la llave de contacto y el coche no andaba</example> 
 
<example> 
 
el coche que te gusta debe andar por los 18 000 euros 
 
</example> 
 
<example>mis relaciones con el jefe andan peor cada día</example> 
 
<example>tenemos mucho trabajo, así que ¡andando!</example> 
 
<example>¡Ándale!, ese vestido te queda perfecto</example> 
 
<example>para que ande el reloj, es necesario darle cuerda</example> 
 
<example>anda, márchate o perderás el tren</example> 
 
<example>anduvo durante el verano por el sur de Italia</example> 
 
<example>no andes con esa navaja que te puedes cortar</example> 
 
<example>anda con la moto por la urbanización</example> 
 
<example>las cosas no andan muy bien este año</example> 
 
<example>¡Ándale! chulita, dame un beso</example> 
 
<example>¿Por dónde anda este pueblo?</example> 
 
<example>anduvo un tiempo metido en política</example> 
 
<example>anda por ahí divirtiéndose</example> 
 
<example>anda con problemas en la vesícula</example> 
 
<example>anda a que te devuelvan bien el cambio</example> 
 
<example>andaba en trámites de divorcio</example> 
 
<example>anda para adentro, que te vas a helar</example> 
 
<example>¡Anda! Se cree que somos tontos</example> 
 
<example>andaba marzo cuando lo conocí</example> 
 
<example>andaba por la calle sin rumbo fijo</example> 
 
<example>¡Anda, si ya son las cuatro!</example> 
 
<example>¡Andando! Que llegamos tarde</example> 
 
<example>andar en bicicleta</example> 
 
<example>andar a garrotazos</example> 
 
<example>andaba fastidiado</example> 
 
<example>andar a caballo</example> 
 
<example>andar resfriado</example> 
 
<example>las horas andan</example> 
 
<example>andar deprisa</example> 
 
<example>andar a gatas</example> 
 
</entry> 
 
<entry id="gatas"> 
 
<hw>gatas</hw> 
 
<fl>adverb</fl> 
 
<def> 
 
<svr> 
 
<va>andar a gatas</va> 
 
</svr> 
 
<dt>:to crawl, to go on all fours</dt> 
 
</def> 
 
<example> 
 
se puso a andar a gatas, husmeando y palpando entre la arenisca 
 
</example> 
 
</entry> 
 
<entry id="ojo"> 
 
<hw>ojo</hw> 
 
<sound>ojo0001sp.wav</sound> 
 
<fl>masculine noun</fl> 
 
<def> 
 
<sn>1</sn> 
 
<dt> 
 
: 
 
<ref-link>eye</ref-link> 
 
</dt> 
 
<sn>2</sn> 
 
<dt> 
 
: 
 
<ref-link>judgment</ref-link> 
 
, 
 
<ref-link>sharpness</ref-link> 
 
<vi> 
 
tener buen ojo para : to be a good judge of, to have a good eye for 
 
</vi> 
 
</dt> 
 
<sn>3</sn> 
 
<dt> 
 
: 
 
<ref-link>hole</ref-link> 
 
(in cheese), 
 
<ref-link>eye</ref-link> 
 
(in a needle), 
 
<ref-link>center</ref-link> 
 
(of a storm) 
 
</dt> 
 
<sn>4</sn> 
 
<dt> 
 
: 
 
<ref-link>span</ref-link> 
 
(of a bridge) 
 
</dt> 
 
<sn>5</sn> 
 
<svr> 
 
<va>a ojos vistas</va> 
 
</svr> 
 
<dt> 
 
: 
 
<ref-link>openly</ref-link> 
 
, 
 
<ref-link>publicly</ref-link> 
 
</dt> 
 
<sn>6</sn> 
 
<svr> 
 
<va>andar con ojo</va> 
 
</svr> 
 
<dt>:to be careful</dt> 
 
<sn>7</sn> 
 
<svr> 
 
<va>ojo de agua</va> 
 
</svr> 
 
<ssl>Mex</ssl> 
 
<dt> 
 
: 
 
<ref-link>spring</ref-link> 
 
, 
 
<ref-link>source</ref-link> 
 
</dt> 
 
<sn>8</sn> 
 
<svr> 
 
<va>¡ojo!</va> 
 
</svr> 
 
<dt>:look out!, pay attention!</dt> 
 
</def> 
 
<example> 
 
los huracanes son enormes cumulonimbos y nimboestratos de hasta 15 km de altura, dispuestos en espiral y formando una muralla alrededor de un anillo central u ojo del huracán, que carece de vientos, nubes y precipitaciones 
 
</example> 
 
<example> 
 
antes de que se caiga el puente, tratarán de repartir el peso colocando pilares en los ojos 
 
</example> 
 
<example> 
 
hay que preparar pronto estas patatas porque les están saliendo muchos ojos 
 
</example> 
 
<example> 
 
con que le des un ojo de jabón a los pantalones, será suficiente 
 
</example> 
 
<example> 
 
abría y cerraba los ojos como si tuviera un tic nervioso 
 
</example> 
 
<example>mantuvo los ojos fijos en mí hasta hacerme sudar</example> 
 
<example>introducimos la llave por el ojo de la cerradura</example> 
 
<example>ándese con ojo, no vaya a meter la pata</example> 
 
<example>el hilo se mete por el ojo de la aguja</example> 
 
<example>al echar aceite en agua se forman ojos</example> 
 
<example>voy con mucho ojo para no equivocarme</example> 
 
<example>se me ha metido algo en el ojo</example> 
 
<example>ser tuerto del ojo izquierdo</example> 
 
<example>sus ojos delataban tristeza</example> 
 
<example>los ojos del queso gruyer</example> 
 
<example>el ojo del azadón</example> 
 
<example>tener los ojos azules</example> 
 
<example>el ojo del martillo</example> 
 
<example>los ojos del pan</example> 
 
<example>el ojo derecho</example> 
 
</entry> 
 
<entry id="rueda[2]"> 
 
<hw hindex="2">rueda</hw> 
 
<sound>rueda02sp.wav</sound> 
 
<fl>feminine noun</fl> 
 
<def> 
 
<sn>1</sn> 
 
<dt> 
 
: 
 
<ref-link>wheel</ref-link> 
 
</dt> 
 
<sn>2</sn> 
 
<dt> 
 
<sx>rodaja</sx> 
 
:round slice 
 
</dt> 
 
<sn>3</sn> 
 
<dt> 
 
: 
 
<ref-link>circle</ref-link> 
 
, 
 
<ref-link>ring</ref-link> 
 
</dt> 
 
<sn>4</sn> 
 
<svr> 
 
<va>rueda de andar</va> 
 
</svr> 
 
<dt> 
 
: 
 
<ref-link>treadmill</ref-link> 
 
</dt> 
 
<sn>5</sn> 
 
<svr> 
 
<va>rueda de prensa</va> 
 
</svr> 
 
<dt>:press conference</dt> 
 
<sn>6</sn> 
 
<svr> 
 
<va>ir sobre ruedas</va> 
 
</svr> 
 
<dt>:to go smoothly</dt> 
 
</def> 
 
<example> 
 
el hombre fue capaz de producir cuerpos y vasijas circulares más perfectos cuando se inventó la rueda del alfarero 
 
</example> 
 
<example> 
 
durante este tiempo tu madre, rueda catalina de la máquina palaciega, permaneció en la corte junto a la reina 
 
</example> 
 
<example> 
 
en aquellos días me habían hartado un poco entre todos con sus continuas ruedas de protestas 
 
</example> 
 
<example> 
 
dijo que no quería que ese periodista estuviese en la rueda de prensa y lo sacó de la sala 
 
</example> 
 
<example> 
 
el gimnasta cruza la diagonal haciendo ruedas y finaliza con un mortal hacia adelante 
 
</example> 
 
<example>en la calle cantan las niñas una canción de rueda</example> 
 
<example> 
 
después de la conferencia hubo una rueda de preguntas 
 
</example> 
 
<example> 
 
los niños juegan a la rueda en el centro de la plaza 
 
</example> 
 
<example>sirvieron un plato lleno de ruedas de salchichón</example> 
 
<example>la bicicleta es un vehículo de dos ruedas</example> 
 
<example>prensar las aceitunas con una rueda de molino</example> 
 
<example>estaban todas en rueda, tomando el chocolate</example> 
 
<example>las ruedas de un automóvil</example> 
 
<example>la rueda del pavo es espectacular</example> 
 
<example>ruedas de merluza congelada</example> 
 
<example>cortar las papas en ruedas</example> 
 
<example>la rueda de repuesto</example> 
 
<example>una rueda de carro</example> 
 
<synant> 
 
<synonym> 
 
<syno>rodaja</syno> 
 
<br/> 
 
</synonym> 
 
</synant> 
 
</entry> 
 
<entry id="tienta[2]"> 
 
<hw hindex="2">tienta</hw> 
 
<sound>tient02sp.wav</sound> 
 
<fl>feminine noun</fl> 
 
<def> 
 
<svr> 
 
<va>andar a tientas</va> 
 
</svr> 
 
<dt>:to feel one's way, to grope around</dt> 
 
</def> 
 
<synant> 
 
<synonym> 
 
<syno>sonda</syno> 
 
<syno>catéter</syno> 
 
<br/> 
 
</synonym> 
 
</synant> 
 
</entry> 
 
</entry_list>

但是这是什么做的是将多个连续<ex_header>标签(计数是完全一样的相应<entry>内以下<example>标签的数量块)在第一个<example>标记之前。我怎样才能修改代码,以确保只有一个标签被添加像这样:

<entry> 
<br> 
<abc></abc> 
<xyz></xyz> 
<ex_header>Example</ex_header> 
<example></example> 
<example></example> 
<example></example> 
</entry> 
<entry> 
<br> 
<abc></abc> 
<xyz></xyz> 
</entry> 
<entry> 
<br> 
<abc></abc> 
<xyz></xyz> 
<ex_header>Example</ex_header> 
<example></example> 
<example></example> 
</entry> 

还有得是,我错过了,把工作做了一些可笑的简单的jQuery功能。

+0

可你的jsfiddle添加代码? –

+0

'$(“example:eq(0)”)。before(“”);'? – Mikel

+0

为什么不是:'$(“”).insertAfter('xyz');'? –

回答

1

您需要涉及选择当前元素,否则你都匹配在文档中的所有元素。这可以通过$(this).find()做到:

$("entry").each(function() { 
    $("<ex_header>").insertBefore($(this).find('example').first()); 
}); 

$(this)将外.each()呼叫的当前元素。

但是,你根本不需要每个循环。只要做到

$("<ex_header>").insertBefore('entry example:first-of-type'); 
+1

我想你的意思是:''entry example:first-of-type''因为使用''entry example:first ''不会插入多次'',':first'适用于所有文档上下文,不像':first-child'或':first-of-type'这是父亲相对选择器 –

+0

非常感谢!我修好了它。 – lex82

1

您可以尝试以下: -

$("entry").each(function() { 
    if ($(this).find("example").length > 0) 
    { 
     $("<ex_header>").insertBefore('example:first'); 
    } 
}); 

它可以帮助你。

+0

我犯了错误,我会编辑这些jsut一分钟 –

+0

我编辑了我的答案,请你试试这些。 –

+0

如果对你有帮助,请更正。 –

2

您需要使用this上下文迭代找到:first元素在当前元素上下文

$("<ex_header>").insertBefore($(this).find('example:first')); 
2

如果要插入头部多发时间,你可以使用:

$("<ex_header>").insertAfter('xyz'); 

按照你的编辑,第一个是行不通的,如果你不希望插入如果没有example元素跟着xyz。所以,你可以只使用:

或者:

$("<ex_header>").insertBefore('example:not(example + example)'); 
相关问题