2014-07-09 13 views
8

Có ai biết nếu có thể gọi hai hàm riêng biệt trên cùng một sự kiện với d3.js không? Tôi biết bạn có thể làm điều này trong JavaScript bằng cách chỉ tách hai bằng dấu chấm phẩy nhưng đã không thành công khi làm điều này với trường hợp cụ thể của tôi. Tôi đang sử dụng biểu đồ bố cục lực với các mẹo công cụ và có hai mẹo công cụ riêng biệt mà tôi muốn sử dụng. Khi di chuột qua, một công cụ-tip xuất hiện nói tên của nút và sau đó khi nhấp vào, tôi muốn có một mẹo công cụ thứ hai để hiển thị mô tả của nó. Mặc dù vậy, trên nhấp chuột đó, tôi muốn cho mẹo công cụ đầu tiên biến mất. Đây là khối mã mà tôi đang sử dụng:Gọi hai hàm trên cùng một sự kiện nhấp với d3.js

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

Tôi muốn gọi tip.hide cùng với describe_tip.show nhưng không biết cú pháp chính xác.

Mọi đề xuất hoặc trợ giúp sẽ được đánh giá cao.

Trả lời

7

Bạn có thể bao gồm hai cuộc gọi hàm bạn muốn thực hiện trong một chức năng ẩn danh, ví dụ:

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

Lưu ý rằng kể từ khi describe_tip.showtip.hide cả đòi hỏi dữ liệu d như một cuộc tranh cãi, bạn cần phải vượt qua mà đối với họ. Nhớ lại rằng khi đi qua một hàm callback nặc danh để .on("click", callback), D3 đi:

mốc d hiện tại và chỉ số hiện tại tôi, với bối cảnh này như là phần tử DOM hiện

để chức năng callback (docs).

+0

Tuyệt vời hoạt động! Cảm ơn bạn. Tôi không bao gồm '(d)' cho 'description_tip.show' và' tip.hide' –

Các vấn đề liên quan