D3中有一種方法可以連接選擇嗎?D3.js:連接選擇?
用例:我想添加一個mouseover事件到這兩個的更新和輸入選擇的特定選擇。
我能做到這一點,如下所示:
var s = d3.selectAll('.yellow').data(myData);
s.on('mouseover'...
s.enter().append('path').attr('class','yellow').on('mouseover'...
但我更喜歡用一行代碼來做到這一點。
D3中有一種方法可以連接選擇嗎?D3.js:連接選擇?
用例:我想添加一個mouseover事件到這兩個的更新和輸入選擇的特定選擇。
我能做到這一點,如下所示:
var s = d3.selectAll('.yellow').data(myData);
s.on('mouseover'...
s.enter().append('path').attr('class','yellow').on('mouseover'...
但我更喜歡用一行代碼來做到這一點。
在這種特殊情況下,您不需要連接 - 輸入選擇在被調用後合併到更新選擇中,因此您需要在更新選擇前處理.enter()
。
一般而言,你不能真正地連接選擇,但實際上這並不是真的必要。您可以修改選擇條件以選擇所需的所有元素,或者,如果這不可行,請使用.call()
在所有選定的元素上運行功能。這種方式你不需要重複代碼來設置屬性等。
如果在d3中有選擇連接,它將非常有用。有時在選擇和將代碼移入一個函數時涉及複雜的邏輯,並且在兩個單獨的位置調用的可讀性比類似(選擇1 +選擇2)的可讀性要低.doYourThings().. – mehmet
在這種特殊情況下,你不需要連接 - 在被調用後,'enter'選擇合併到'update'選擇中,所以所有你需要做的就是在'update'選擇之前處理'.enter()'。 –
啊我明白了,謝謝。 – Richard
我會添加一個答案作爲參考。 –