2011-01-15 3 views
2

J'ai une zone de texte. Ce que je veux arriver est quand l'utilisateur est concentré dans la zone de texte pour qu'elle croisse jusqu'à 4em, quand l'utilisateur n'est pas focalisé dans la zone de texte/floue, retournez-le au 1em par défaut.jQuery Effectuer un événement de clic/flou direct en direct

Voici ce que j'ai jusqu'à présent:

$('.comment_content').live('focus click', function() { 
    $(this).addClass('grow'); 
}).live('blur', function() { 
    $(this).removeClass('grow'); 
}); 

Alors cela a fonctionné très bien et dandy, mais est ici la question. Un utilisateur peut joindre un fichier à un commentaire, quelque chose comme:

<textarea type="text" class="comment_content"> </textarea> 
<div id="attachfile">attach file</div> 

La seule exception que je voudrais à ce qui précède jQuery est que si l'utilisateur clique pour joindre un fichier, puis le removeClass ne doit pas fonctionner.

Des idées?

Merci

+0

Comment puis-je obtenir l'ID de l'élément cliqué qui déclenche l'FLOU? – AnApprentice

Répondre

1

je mettrais la fonction removeClass dans un bloc de code setTimeout d'environ 500 millisecondes. Avoir le feu de code seulement si l'élément attachfile n'a pas une classe de 'active'. Ensuite, ajoutez un gestionnaire d'événement à l'élément attachfile, qui ajoute une classe de 'active' au clic.

$('.comment_content').live('focus click', function() { 
    $(this).addClass('grow'); 
}); 

$("body").live("click focus", function(evt) { 
    if (!$(evt.target).is('.grow, #attachfile')) 
     $('.comment_content').removeClass('grow'); 
}); 

Mise à jour 16/01/11

Une meilleure compréhension du problème ce matin et ont créé le jsFiddle suivant. http://jsfiddle.net/uc8Qv/

Rich

+0

Merci Rich ne suis pas sûr que je suis comment cela fonctionnerait pour mon cas d'utilisation. Seriez-vous prêt à faire un jsfiddle? – AnApprentice

+0

Merci @mu, utilisait iPad hier soir. Aucune option de formatage – kim3er

+0

Cela semble répondre parfaitement à la question, et l'inclusion d'un jsfiddle est au-dessus et au-delà. +1 @AnApprentice: Pourquoi la réponse n'a-t-elle pas été acceptée? –