Tengo un div, donde tengo un ul, donde el ul tiene algo de li.

Solo quiero encontrar algo de texto y eliminar el li del ul.

Supongamos, por ejemplo:

<div id="div1">
  <ul>
    <li>Hello</li> <!--i need to remove this.-->
  </ul>
</div>
3
nimi 14 dic. 2009 a las 14:44

3 respuestas

La mejor respuesta

Con jQuery, puedes hacer esto:

$("#div1 ul li:contains('Hello')").remove();
7
Dominic Rodger 14 dic. 2009 a las 11:47
function removeLi()
{
    var DIV = document.getElementById('div1');
    var LI = DIV.getElementsByTagName('li');
    LI[0].parentNode.removeChild(LI[0]); //remove the first li
    //LI[1].parentNode.removeChild(LI[1]); //remove the second li
}
0
Leo 24 dic. 2009 a las 00:59
var div = document.getElementById('div1'),
    ul = div.getElementsByTagName('ul')[0],
    li = ul.getElementsByTagName('li'),
    len = li.length;

// Go backwards so that removing items has no effect
while (len--) {
    if ( /Hello/.test(getText(li[len])) ) {
        ul.removeChild(li[len]);
    }
}

function getText(node) {
    var s = '';
    node = node.firstChild;
    if ( node ) do {
        if ( node.nodeType === 3 ) {
            s += node.data;
        }
        if ( node.nodeType === 1 ) {
            s += getText(node);
        }
    } while ( node = node.nextSibling );
    return s;
}
14
James 14 dic. 2009 a las 12:55