2012-07-22 3 views
2

Je suis actuellement en utilisant le ci-dessous pour basculer plusieurs div mais je me demande si je peux combiner tous ceux-ci en un seul?Combiner plusieurs instances de code jquery

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#tvehicle").click(function() { 
     $("#div7").toggle(); 
    }); 
}); 
</script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#tvehicle2").click(function() { 
     $("#vehicle2").toggle(); 
    }); 
}); 
</script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#tproperty").click(function() { 
     $("#div8").toggle(); 
    }); 
}); 
</script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#thproperty1").click(function() { 
     $("#hproperty1").toggle(); 
    }); 
}); 
</script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#thproperty2").click(function() { 
     $("#hproperty2").toggle(); 
    }); 
}); 
</script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#thproperty3").click(function() { 
     $("#hproperty3").toggle(); 
    }); 
}); 
</script> 
+4

classes d'utilisation, Luke. – zerkms

+0

@Legs pourriez-vous poster votre structure HTML s'il vous plaît? –

+0

@DavidBarker le HTML a beaucoup de travail sensuel, mais je vais le retirer et le remplacer par quelque chose d'autre et le poster quand j'ai une chance – Legs

Répondre

1
<script type="text/javascript"> 
$(document).ready(function(){ 
$("#tvehicle").click(function(){ 
    $("#div7").toggle(); 
}); 

$("#tvehicle2").click(function(){ 
$("#vehicle2").toggle(); 
}); 

//AND SO ON... 

}); 
</script> 

Vous pouvez mettre toutes les fonctions en une seule fonction document.ready. Comme ci-dessus:) ... De même, vous ne devez pas avoir de nouvelles étiquettes <script> pour chaque fonction.

+0

Je viens de supprimer 100 lignes de code! Je vous remercie!! – Legs

+0

Vous pouvez supprimer beaucoup plus de jambes encore, c'est une bonne réponse, mais vous devez également apporter quelques modifications à votre structure HTML pour le réduire beaucoup plus loin. –

1

Ajouter une classe à tous les divs, par exemple:

<div id="tvehicle2" class="toggleable"> ... </div> 

vous pouvez alors faire:

$(".toggleable").click(function() { 
    $(this).toggle(); 
}); 

si vous ne voulez pas (ou ne peut pas) ajouter une classe à tous les articles toggleable, vous pouvez également combiner plusieurs id références dans un sélecteur:

$('#tvehicle1, #tvehicle2, #tv3').click(function() { 
    $(this).toggle(); 
}); 
+0

Dans l'exemple ci-dessus, comment devrais-je spécifier quel div chaque référence d'id est de basculer? – Legs

+0

Il va basculer celui sur lequel vous avez cliqué - qui est lié à 'this' dans le gestionnaire d'événements (et seulement celui-là). – thebjorn

+0

désolé, je vois ce que votre problème est .. les articles basculés ne sont pas les mêmes que ceux qui sont cliqués. Ont-ils une relation dom, par ex. est-ce que l'un est contenu dans/à côté de l'autre? – thebjorn

0

vous pouvez utiliser les données des attributs pour spécifier l'élément à t oggle. example

$(document).ready(function(){ 
var toggler = function() { 
    var toToggle = $(this).data().toggleId; //Id of an element to toggle 

    $("#" + toToggle).toggle();   
}; 

$(".togglers").on("click", ".toggler", toggler); 
}); 

structure HTML

<div class="togglers"> 
<div class="toggler" data-toggle-id="to-toggle-1">Click to toggle 1</div> 

<div class="to-toggle" id="to-toggle-1">I will be toggled #1</div> 

<div class="toggler" data-toggle-id="to-toggle-2">Click to toggle 2</div> 

<div class="to-toggle" id="to-toggle-2">I will be toggled #2</div> 

<div class="toggler" data-toggle-id="to-toggle-3">Click to toggle 3</div> 

<div class="to-toggle" id="to-toggle-3">I will be toggled #3</div> 
</div>​ 

+0

Vous devez inclure les morceaux substantiels de code du violon dans votre réponse. – millimoose

+0

Attributs de données: http://ejohn.org/blog/html-5-data-attributes/ et en jQuery http://api.jquery.com/data/ – thebjorn

+0

175 lignes sont devenues 9! Merci beaucoup! – Legs

Questions connexes