Ricerca…


Sintassi

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

Osservazioni

Per un esempio più approfondito in cui sono definiti gli eventi personalizzati, fare riferimento qui .

Allegare eventi di base alle selezioni

Spesso ti piacerebbe avere eventi per i tuoi oggetti.

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)

Questo esempio aggiungerà la classe spanOver quando si passa con il mouse su un intervallo all'interno del div con il divID id e lo si rimuove quando il mouse esce dallo span.

Di default d3 passerà il dato dello span corrente e l'indice. E 'davvero utile che this 'contesto, s è l'oggetto corrente come pure in modo che possiamo fare operazioni su di esso, come aggiungere o rimuovere classi.

Puoi anche usare una funzione anonima anche sull'evento.

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

Gli elementi dati possono anche essere aggiunti all'oggetto selezionato corrente.

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);
  }
}

In questo esempio, l'attivo non è definito sulla selezione prima che l'evento click venga attivato. Se dovessi tornare indietro sulla selezione del percorso, tutti gli oggetti cliccati conterranno la chiave active .

Rimuovi listener di eventi

d3.js non ha un metodo .off() per distinguere i listener di eventi esistenti. Per rimuovere un gestore di eventi, devi impostarlo su null :

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow