Jak mogę to zrobić z jQuery? Myślałem o pętli i indeksowaniu, ale nie mogę się tam dostać. Chcę usunąć cały węzeł po symbolu [.

<p>1</p>
<p>2</p>
<p>3</p>
<p>[</p><!-- detect this symbol and delete ALL the element after it (include itself) -->
<p>a</p>
<p>b</p>
<p>c</p>
<p>1</p>
<p>2</p>
<p>3</p>
<p>1</p>
<p>2</p>
<p>3</p>
0
user3522761 15 sierpień 2014, 06:19

2 odpowiedzi

Najlepsza odpowiedź

Użyj jQuery :contains selektor, aby wybrać element z określonym tekstem. Spróbuj tego:

Do jQuery 1.8:

$("p:contains('[')").nextAll().andSelf().remove();

Z nowszymi wersjami jQuery:

$("p:contains('[')").nextAll().addBack().remove();

Demo

2
Unknown 15 sierpień 2014, 02:23

Zauważyłem, że wspomniałeś o czymś o indeksowaniu, więc oto długą drogę proceduralną wykonania tego za pomocą jQuery:

Próbny

var remove = false;
var para = {};
$("p").each(function () {
    para = $(this);
    if (para.text().indexOf("[") !=-1) {
        remove = true;
    }
    if (remove) {
        para.remove();
    }  
});

Może możesz go owinąć w funkcji

function remove_elem(elem, ch) {
    var to_remove = false;
    var para = {};
    $("" + elem).each(function () {
        para = $(this);
        if (para.text().indexOf("" + ch) != -1) {
            to_remove = true;
        }
        if (to_remove) {
            para.remove();
        }
    });    
    return to_remove;
}
//And call it 
remove_elem("p", "[");
0
Mohammed Joraid 15 sierpień 2014, 02:43