2009-08-20 12 views
0

Ich habe einige Text auf einer Seite, und ich möchte befindet, und entfernen Sie Text in Klammern gefunden. Zum Beispiel:Text in Klammern in jQuery gewickelt finden

<td>here is [my text] that I want to look at</td> 

Deshalb möchte ich diesen Text (mein Text) greifen, es in einer Variablen speichern und entfernen Sie sie aus, wo es ist.

Antwort

1

Wenn Sie jQuery verwenden Sie einen regulären Ausdruck wie \[(.+)\] auf $ verwenden könnten ('Körper'). Text().

EDIT: Sorry, ich könnte die Waffe ein wenig gesprungen diese Antwort zu geben. Ich werde noch ein paar Minuten darüber nachdenken und versuchen, dies mit ein wenig mehr Informationen zu aktualisieren.

1

Sie können feststellen, dass diese Aufgabe nicht so einfach ist. Wenn Sie die Kontrolle über den Text haben, bevor sie an den Web-Browser gesendet wird, können Sie eine <span class='bracket'>[my text]</span> um den Text setzen wollen, dann könnte man leicht mit jQuery so etwas tun:

$(".bracket").each(function() { 
    // store the data from $(this).text(); 
}).remove(); 

Dies kann getan werden, mit Hilfe von regulären Ausdrücke und jQuery, aber es gibt Probleme, die mit dem Text zu tun innerhalb von Attributen wie <input name='test[one][]' /> Die „einfache“ Regex zu tun wäre, so etwas wie dies kriechen kann: wenn Sie

$("td").each(function() { 
    var $this = $(this); 

    var html = $this.html(); 
    var bracketText = []; 

    // match all bracketed text in the html - replace with an empty string 
    // but push the text on to the array. 

    html = html.replace(/\[([^\]]+)\]/g, function() { 
    bracketText.push(arguments[1]); 
    return ""; 
    }); 

    // put the new html in away and save the data for later 
    $this.html(html).data("bracketText", bracketText); 
}); 

Es gibt nicht viel Gefahr ist dies tun Stellen Sie sicher, dass Sie [] innerhalb von Tags nicht im Text haben.

+0

Dies ist eine Art, was ich dachte, außer versuchte Denken Sie daran, wie Sie es nicht nur auf bestimmte Tags anwenden können (wenn Sie nicht wüssten, was die Tags waren, die den geklammerten Text enthielten). Sehr schön. – theIV

0

Ich landete die folgenden Schritte ausführen:

 $('#formQuizAnswers td.question').each(function(){ 
     var header = $(this).text().match(/-.*-/); 
     $(this).text($(this).text().replace(header,'')); 
}); 

ich meinen Text geändert Ich suche Striche zu haben, um es IE -My text-

+0

Ich würde hier keinen gierigen Quantifizierer verwenden. Wie wäre es mit nur - '/ - [^ -] * - /' – kangax