2009-03-02 25 views
6

Ho un div che si interrompe facendo clic su un'intestazione di testo. Voglio cambiare il colpo di testa da "+" a "filtri - filtri" di conseguenza (quando il div è compresso o espanso)Manipolazione stringa in jQuery

Come posso eseguire questo con jQuery:

if (headerDiv.text() starts with "+") 
    replace "+" with "-" 
else 
    replace "-" with "+" 

?

risposta

13

Non importa, ho capito

if ($(header).text().trim().charAt(0) == "+") 
    $(header).text($(header).text().replace("+", "-")); 
else 
    $(header).text($(header).text().replace("-", "+")); 

Se questo non è il modo corretto, mi farebbe piacere a testa alta

4

vorrei fare:

var plus_string = "<span class=/"plus/">+</span>"; 
var minus_string = "<span class=/"minus/">-</span>"; 


if($("div.header").hasClass("plus")){ 
    $("div.header").removeClass("plus"); 
    $("div.header").addClass("minus"); 
    $("div.header").append(plus_string); 
    $("span.plus").remove(); 
} else (... the reverse of the above...) 

Questo perché vorrei usare il plus di classe e meno per gestire un po 'di CSS per modificare l'aspetto del div intestazione. Come probabilmente stai già facendo, si può giocare un po 'con lui in questo modo :)

1

mantienilo semplice, perché hai bisogno di analizzarlo? la tua giusta sostituzione di una stringa con un'altra.

if(headerDiv.text() == '+ filters') 
{ 
    headerDiv.text() == '- filters'; 
} 
elseif(headerDiv.text() == '- filters') 
{ 
    headerDiv.text() == '+ filters'; 
}