2009-02-12 13 views
7

Cacher un DIV serait assez facile en Javascript, mais y a-t-il un moyen de le faire? Je peux penser à quelques façons de le faire en appelant Javascript à partir d'un partiel (.erb), bien sûr, mais je préfèrerais ne pas écrire de Javascript du tout. Possible?Cacher un DIV [Rails]

Edit: La page est chargée et je voudrais cacher la DIV après (bien sur) un appel Ajax, donc je suis dans un de ces blocs render :update.

+0

comment/quand voulez-vous caché? En charge, après un événement, ou après un appel ajax? –

+0

éditer la question maintenant –

+0

merci Luca. Pourquoi est-ce mauvais? S'il vous plaît élaborer afin que je puisse savoir si vous avez un point ou si vous ne faites que déclamer. –

Répondre

11

Ou, droit à votre avis:

Pour un div spécifié de classe:

<%= link_to_function "Toggle", "$('.some_div').toggle()" %> 

Pour un spécifié ID div:

<%= link_to_function "Toggle", "$('#some_div').toggle()" %> 

(notic) e la marque de hachage)

période Ajouté à la classe spécifique div id et hachage div spécifique

+0

Donc, ça ne passerait même pas du côté serveur, n'est-ce pas? –

+0

Oui, pur JS. Cacher un div est définitivement le domaine de JS, en passant par sur le serveur pour masquer un div est overkill –

+0

J'adore ça Merci –

1

Je ne connais pas vraiment les rails, mais pouvez-vous simplement afficher quelque chose comme style = "display: none;" dans l'étiquette div?

+0

Je ne sais pas rails non plus :), mais mon sentiment est que je ne peux pas .. Je ne peux toucher que les éléments qui se trouvent dans un DIV ou un autre élément adressable ID de la page HTML. –

+0

Bummer :(- Je suppose que j'obtiendrais probablement jquery de la boîte à outils à ce moment-là – seanb

+0

Nah, il a un prototype et scriptalicious (sp.) Par défaut, mais même avec JS simple c'est facile, mais maintenant avec les réponses ici (ci-dessus) Je suis prêt à partir –

3

Pour rendre une mise à jour RJS de votre contrôleur:

respond_to do |format| 
    format.html 
    format.js { render(:update) { |page| page.hide('element_id') } } 
end 

Vous pouvez consulter le API pour d'autres réponses RJS.

+0

Impressionnant, bonne réponse Merci –

6
render :update do |page| 
    page.hide 'div_id' 
end 

Vous pouvez lancer ceci dans votre bloc respond_to ou un modèle RJS.

Une autre astuce utile, en utilisant la même syntaxe:

render :update do |page| 
    page << 'arbitrary javascript code goes here.' 
end 
1
<%= link_to_function "Toggle", visual_effect(:toggle_blind, "some_div") %> 
Questions connexes