簡體   English   中英

使用Jquery在另一個元素首次出現之前插入元素/文本

[英]Using Jquery to insert element/text before the first occurrence of another element

我的xml看起來像這樣:

<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>標記之前添加一個新元素以及文本(例如<example_header>Examples</example_header> )。 如您所見,並非所有的<entry>都將具有相同數量的<example>標記,並且並不是所有的甚至都具有一個。 我嘗試了以下JQuery hack:

 $("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 { color: #939393; font-weight: bold; font-size: 350%; text-shadow: 0px 2px 0px #fff; } fl, vt, spl, il { color: #939393; font-style: italic; } synn, antt { color: #939393; font-weight: bold; font-size: 150%; text-shadow: 0px 2px 0px #fff; } .dict_source { float: right; color: #939393; font-size: 100%; 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> 

但這是在第一個<example>標記之前添加多個連續的<ex_header>標記(計數與相應的<entry>塊中隨后的<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函數來完成工作。

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

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

如果要多次插入標題,可以使用:

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

編輯后,如果沒有example元素跟隨xyz則如果不想插入,第一個將不起作用。 因此,您可以使用:

要么:

$("<ex_header>").insertBefore('example:not(example + example)');

您可以嘗試這些:

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

它可能會幫助您。

您需要將選擇器與當前元素相關聯,否則,您將匹配文檔中的所有元素。 這可以通過$(this).find()

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

$(this)將是外部.each()調用的當前元素。

但是,您根本不需要每個循環。 做就是了

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM