Recherche…


Syntaxe

  • .on ('mouseover', fonction)
  • .on ('mouseout', fonction)
  • .on ('clic', fonction)
  • .on ('mouseenter', fonction)
  • .on ('mouseleave', fonction)

Remarques

Pour un exemple plus détaillé où les événements personnalisés sont définis, reportez-vous ici .

Joindre des événements de base sur des sélections

Souvent, vous voudrez avoir des événements pour vos objets.

function spanOver(d,i){
  var span = d3.select(this);
  span.classed("spanOver",true);
}

function spanOut(d,i){
  var span = d3.select(this);
  span.classed("spanOver", false);
}

var div = d3.select('#divID');

div.selectAll('span')
  .on('mouseover' spanOver)
  .on('mouseout' spanOut)

Cet exemple ajoutera la classe spanOver lors du spanOver un intervalle à l'intérieur du div avec l'id divID et le supprimera lorsque la souris quittera le span.

Par défaut, d3 transmettra le datum de la plage actuelle et de l'index. Il est très pratique que this le contexte actuel, de sorte que nous puissions y effectuer des opérations, comme ajouter ou supprimer des classes.

Vous pouvez également simplement utiliser une fonction anonyme sur l'événement.

div.selectAll('span')
  .on('click', function(d,i){ console.log(d); });

Des éléments de données peuvent également être ajoutés à l'objet sélectionné.

div.selectAll('path')
  .on('click', clickPath);

function clickPath(d,i) {
  if(!d.active) {
    d.active = true;
    d3.select(this).classed("active", true);
  }
  else {
    d.active = false;
    d3.select(this).classed("active", false);
  }
}

Dans cet exemple, active n'est pas définie sur la sélection avant que l'événement click ne soit déclenché. Si vous deviez revenir sur la sélection du chemin, tous les objets cliqués contiendraient la clé active .

Supprimer un écouteur d'événement

d3.js n'a pas de méthode .off() pour détecter les écouteurs d'événements existants. Pour supprimer un gestionnaire d'événement, vous devez le définir sur null :

d3.select('span').on('click', null)


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow