2010-03-22 4 views
2

Pour chaque clic, je veux augmenter la taille de la police.Chaque clic Je veux augmenter la taille de la police en utilisant jquery

$('#fontplus').each(function('click') { 
    var fs = $('#bod').css('font-size'); 
    $('#bod').css('font-size',fs+1); 

}); 

<div id="fontplus">+</div> 

Merci Jean

+0

vous devez savoir si vous avez des erreurs ou ce qui se passe mal. les gens peuvent ne pas vouloir vous aider si vous ne fournissez pas les informations minimales – Mathieu

Répondre

3

Eh bien, comme vous avez probablement découvert, cela ne fonctionnera pas.

$('#fontplus').click(function() { 
    var fs = $('#bod').css('fontSize'); 

Maintenant, vous avez la taille de police actuelle. Cependant, qu'est-ce que c'est? Est-ce "12px"? Ou peut-être c'est "1.5em"? Eh bien, en supposant que vous contrôlez que, ce que vous devez faire est de démonter le réglage actuel, puis mis en place la nouvelle valeur:

$('#bod').css('fontSize', (parseInt(fs, 10) + 1) + 'px'); 
}); 
0
var bod; 
    var fontPlus; 
    $(document).ready(function() { 
     bod = $('#bod'); 
     fontPlus = $('#fontPlus'); 
     fontPlus.click(function() { 
     var fontSize = bod.css('font-size'); 
     var fontSizeNum = parseFloat(fontSize, 10); 
     bod.css('font-size', fontSizeNum * 1.2); 
     }); 
    }); 

plus d'informations et des exemples here

+0

love the downvote! peux-tu me donner une raison? –

+0

n'était pas moi! s'il vous plaît enlever votre downvote – hunter

+0

:) ne vous accusent pas downvoting ma réponse –

0

Vous devez gérer l'événement clic:

$('#fontplus').click(function() { 
    var fs = $('#bod').css('font-size'); 
    $('#bod').css('font-size',fs+1); 
}); 

Vous devez définir le font- initial taille en CSS à une valeur entière.

1

Voulez-vous réellement qu'ils soient en mesure de le faire à l'infini? Je suggère d'avoir 3 ou 4 classes CSS différentes pour représenter chaque taille de police disponible et la gérer avec jQuery.

Les autres exemples ne considèrent même pas les unités utilisées! Points? Pixels? .css ("font-size") retournera cela, donc faire un ++ ne marchera pas.

$("#fontplus").click(function() { 
    switch($("#bod").attr("className")) 
    { 
     case "large" : /* do nothing */ break; 
     case "medium" : $("#bod").removeClass("medium").addClass("large"); break; 
     /* do as needed */ 
    } 
}); 

et j'aurais chaque look classe comme css:

.large { font-size: 1.4em; } 
.medium { font-size: 1.2em; } 
.normal { font-size: 1em; } 
.small { font-size: .8em; } 
+2

Mieux encore, gardez les classes dans un petit objet de sorte qu'au lieu d'une déclaration de commutateur, vous recherchez simplement la classe actuelle et utilisez la valeur stockée dans la classe suivante. Comme, 'var steps = {" petit ":" moyen "," moyen ":" grand "," grand ":" plus grand "," plus grand ":" plus grand "};' et ensuite le gestionnaire est juste $ ('#bod'). attr ('className', étapes [$ ('# bod'). attr ('className')]); ' – Pointy

Questions connexes