2009-03-02 11 views
6

Tengo un div que se contrae al hacer clic en un encabezado de texto. Quiero cambiar el encabezado de "+" a "filtros - filtros" en consecuencia (cuando el div se contrae o se expande)Manipulación de cadenas en jQuery

¿Cómo puedo realizar esto con jQuery:

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

?

Respuesta

13

No importa, lo he descubierto

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

Si este no es el camino correcto, se lo agradecería un encabezado

4

que haría:

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...) 

esto porque me gustaría utilizar el signo más y menos de clase para manejar un poco de CSS para cambiar la apariencia de la div de cabecera. Como probablemente ya está haciendo eso, puede jugar un poco con él como esto :)

1

mantenlo simple, ¿por qué tienes que analizarlo? simplemente estás reemplazando una cadena por otra.

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