sách gpt4 ai đã đi

d3.js - 如何在d3中获得父选择?

In lại 作者:行者123 更新时间:2023-12-04 17:31:54 26 4
mua khóa gpt4 Nike

要创建此 DOM:






Từ .enter()选择,我试过:
someUpdate.enter()
.append('g')
.attr('class', 'my-group')
.append('rect')
.attr('class', 'my-rect')
// I'd like to get the .parent() here
.append('cicle')
.attr('class', 'my-circle')

这不起作用,因为 .append('rect')将选择更改为 rect .

打破这个:
const update = someUpdate.enter()
.append('g')
.attr('class', 'my-group')

cập nhật
.append('rect')
.attr('class', 'my-rect')

cập nhật
.append('cicle')
.attr('class', 'my-circle')

作品。

但是,我想知道是否有更清洁的方法?

1 Câu trả lời

D3 中没有用于遍历 DOM 的方法,例如jQuery 的 .parent() .因此,您将其分解为单独的语句的方式将是正确的方法。

另一方面,按照您最初建议的方式进行操作并非完全不可能。就在昨天,我发布了一个 answerĐẾN "D3.js - what is selection.call() returning?"解释如何 selection.call() 将准确返回它被调用以允许方法链接的选择。记住这一点,你可以像下面这样:

d3.select("svg").selectAll("g")
.data([1])
.enter().append('g')
.call((parent) => parent.append('rect')
.attr("fill", "red")
.attr("width", 100).attr("height", 100))
.call((parent) => parent.append('circle')
.attr("fill", "blue").attr("r", 50));


.call() 调用的两个函数将通过之前输入的相同选择 元素,在这种情况下恰好是父元素。

尽管可以通过这种方式做到这一点,但该解决方案有其缺点。首先,对于任何经验丰富的 D3 开发人员来说,它看起来有些奇怪和尴尬,如果您想与他人共享或讨论您的代码,这可能会使问题复杂化。其次,即使我将参数命名为 cha mẹ ,在这种特殊情况下,它仍然不是真正等同于 jQuery 的 .parent()方法。它只会传入并返回完全相同的选择,无论是父选择还是其他选择。

关于d3.js - 如何在d3中获得父选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41758314/

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com