2014-07-09 23 views
8

Aynı olayda d3.js ile iki ayrı işlevi çağırmanın mümkün olup olmadığını bilen var mı? Bunu, iki noktalı virgülü ile ayırarak ancak bunu özel durumumla başarılı bir şekilde gerçekleştiremediğinizde JavaScript'te yapabileceğinizi biliyorum. Araç ipuçlarıyla bir güç düzeni grafiği kullanıyorum ve kullanmak istediğim iki ayrı araç ipucuna sahibim. Mouseover üzerinde, düğümün adını ve daha sonra tıklamanın adını belirten bir araç ipucu, açıklamasını göstermek için ikinci bir araç ipucu istiyorum. Bununla ilgili olarak, ilk araç ipucunun gitmesini istiyorum. Ben describe_tip.show birlikte tip.hide çağırmak istiyorum ama doğru sözdizimi bilmiyorumd3.js ile aynı tıklatma olayında iki işlevi çağırma

  .on("click", describe_tip.show) 
     .on("mouseover", tip.show) 
     .on("mouseout", tip.hide) 

: İşte kullanıyorum kod bloğudur.

Herhangi bir öneri veya yardım için teşekkür ederiz.

cevap

7

Yapmak istediğiniz iki işlev çağrısını anonim bir işleve, örn. describe_tip.show ve tip.hide hem verileri gerektirdiği için d bir argüman olarak, onlara o geçmesi gerektiğini

.on("click", function(d){ 
    describe_tip.show(d); 
    tip.hide(d); 
}) 

Not. .on("click", callback) anonim bir geri arama işlevi geçerken, D3 geçer hatırlayın:

akım sıfır noktası d ve akım endeksi i mevcut DOM elemanı olarak bu kapsamda

için callback işlevi (docs).

+0

Bu harika çalışıyor! Teşekkür ederim. '(D) '' define_tip.show' ve 'tip.hide' için dahil edemedim –