Pregunta Jquery quita todo excepto en negrita.


Tengo html como este:

<div id="divTestArea1">
    <b>Bold text</b>
    <i>Italic text</i>
    <div id="divTestArea2">
            <b>Bold text 2</b>
            <i>Italic text 2</i>
            <div>
                    <b>Bold text 3</b>
            </div>
    </div>

y me gustaría eliminar todos los elementos que no son negritas. Lo he intentado con este código:

$('*:not(b)').remove();

y algunas otras variaciones, pero todas o bien se equivocan o eliminan todo. Por cierto, ¿son jquery selectores y jsoup selectores 100% compatibles? También me gustaría usar la respuesta a esto en jsoup.


5
2017-08-17 05:45


origen


Respuestas:


Tu código actual elimina el documento <body> así como también todo <div>s que contienen el <b> etiquetas. Si solo desea guardar el texto en negrita, la solución de Shih-En Chou funciona bien. Si quieres guardar el <div> estructura que el <b> Las etiquetas también están en, usted podría hacer esto:

$("body *:not(div, b)")​​​​.remove();​

MANIFESTACIÓN


5
2017-08-17 05:56



Mi solución:

Yo cloné <b>  y guárdalo en la memoria. -> Eliminar todo -> insertar <b> dentro <body>

aquí está mi código: http://jsfiddle.net/sechou/43ENq/

$(function(){
   var tmpB = $("b").clone();
   $('body').remove();
   $("body").append(tmpB);
});​

3
2017-08-17 05:51



Mover todos los elementos #divTestArea2 ya que es un div y será eliminado también para #divTestArea1, luego filtra todo lo que no es un <b> y eliminarlo:

$("#divTestArea1").append($("*", "#divTestArea2")).find('*').filter(function() {
    return this.tagName !== 'B';
}).remove();

VIOLÍN

Lo anterior mantiene el #divTestArea1 elemento intacto, para eliminar todo pero el <b> elementos, algo como:

$('body')​.append($('b'))​.find('*')​.not('b')​.remove();​

VIOLÍN


2
2017-08-17 06:05



yo prefiero .detach().

var $body = $("body");
var $b = $("b", $body).detach();
$(":not(b)", $body).remove();​​​​​​​​​​​
$body.append($b);

De esta forma, no necesita mover ni clonar nada para superar el problema de la eliminación de los objetos que envuelven su <b/> elementos.

(manifestación)


2
2017-08-17 06:13



Prueba esto:

// Find all the <b> tags and unwrap them so they all become siblings and finally 
// remove non <b> siblings
$('body').find('b').unwrap().siblings('*:not(b)').remove();

Manifestación: http://jsfiddle.net/3f2Hu/


1
2017-08-17 06:07



Preguntas populares