Javascript 如何更新移动对象的引导(工具提示)?

Javascript 如何更新移动对象的引导(工具提示)?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个移动的对象。我想显示/更新此工具提示信息,比如每2s一次。它工作正常,但即使对象已移动,位置也不会改变,工具提示保持初始位置并保持静止(抱歉,我没有提供工作示例) 如何更新其位置以跟随(而不是鼠标)?event.pageX和event.pageY 下面的描述是针对event.pageX的 描述:相对于文档左边缘的鼠标位置 下面是我在一个应用程序中使用的代码 您可以在鼠标悬停事件中显示下面的div date.selectAll("rect") .data(fun

我有一个移动的
对象。我想显示/更新此
工具提示信息
,比如每
2s一次。它工作正常,但即使对象已移动,位置也不会改变,
工具提示保持初始位置并保持静止(抱歉,我没有提供工作示例)

如何更新其位置以跟随
(而不是鼠标)?

event.pageX和event.pageY 下面的描述是针对event.pageX的 描述:相对于文档左边缘的鼠标位置

下面是我在一个应用程序中使用的代码

您可以在鼠标悬停事件中显示下面的div

date.selectAll("rect")
    .data(function(d) {
        return d.mattel_data;
    })
    .enter().append("rect")
    .attr("width", x.rangeBand())
    .attr("y", function(d) {
        return y(d.y1);
    })
    .attr("height", function(d) {
        return y(d.y0) - y(d.y1);
    })
    .style("fill", function(d) {
        return color(d.name);
    })
    .on("mouseover", function(d) {
        div.transition()
            .duration(100)
            .style("opacity", .9);
            var hoverVal = (d.y1 - d.y0);
            var formatter = new Intl.NumberFormat('en-US',{
              style : 'currency',
              currency : 'USD',
              minimumFractionDigits : 2,
            });
            var pop = formatter.format(hoverVal);
            // console.log(pop);
            div.html("Value:" + pop + "<br/>" + d.name)
            .style("left", (d3.event.pageX - 140) + "px")
            .style("top", (d3.event.pageY - 80) + "px")
            .style('position', 'absolute')
            .style('font-size', '15px')
            .style('background', function() {
                return color(d.name);
            })
            .style('color', function() {
                return getContrastYIQ(color(d.name));
            })
    })
    .on("mouseout", function(d) {
        div.transition()
            .duration(200)
            .style("opacity", 0);
    });
date.选择全部(“rect”)
.数据(功能(d){
返回d.mattel_数据;
})
.enter().append(“rect”)
.attr(“宽度”,x.rangeBand())
.attr(“y”,函数(d){
返回y(d.y1);
})
.attr(“高度”,功能(d){
返回y(d.y0)-y(d.y1);
})
.样式(“填充”,功能(d){
返回颜色(d.name);
})
.on(“鼠标悬停”,功能(d){
过渡部()
.持续时间(100)
.样式(“不透明度”,.9);
var hoverVal=(d.y1-d.y0);
var formatter=new Intl.NumberFormat('en-US'{
风格:“货币”,
货币:美元,
最小分数位数:2,
});
var pop=formatter.format(hoverVal);
//控制台日志(pop);
div.html(“值:“+pop+”
“+d.name”) .style(“左”(d3.event.pageX-140)+“px”) .style(“顶部”(d3.event.pageY-80)+“px”) .style('位置','绝对') .style('font-size','15px') .style('background',function(){ 返回颜色(d.name); }) .style('color',function()){ 返回getControlyIQ(颜色(d.name)); }) }) .开启(“鼠标出”,功能(d){ 过渡部() .持续时间(200) .样式(“不透明度”,0); });
看看这是否对你有帮助。 此外,如果您在此处发布代码,将有助于更清楚地理解问题

event.pageX和event.pageY 下面的描述是针对event.pageX的 描述:相对于文档左边缘的鼠标位置

下面是我在一个应用程序中使用的代码

您可以在鼠标悬停事件中显示下面的div

date.selectAll("rect")
    .data(function(d) {
        return d.mattel_data;
    })
    .enter().append("rect")
    .attr("width", x.rangeBand())
    .attr("y", function(d) {
        return y(d.y1);
    })
    .attr("height", function(d) {
        return y(d.y0) - y(d.y1);
    })
    .style("fill", function(d) {
        return color(d.name);
    })
    .on("mouseover", function(d) {
        div.transition()
            .duration(100)
            .style("opacity", .9);
            var hoverVal = (d.y1 - d.y0);
            var formatter = new Intl.NumberFormat('en-US',{
              style : 'currency',
              currency : 'USD',
              minimumFractionDigits : 2,
            });
            var pop = formatter.format(hoverVal);
            // console.log(pop);
            div.html("Value:" + pop + "<br/>" + d.name)
            .style("left", (d3.event.pageX - 140) + "px")
            .style("top", (d3.event.pageY - 80) + "px")
            .style('position', 'absolute')
            .style('font-size', '15px')
            .style('background', function() {
                return color(d.name);
            })
            .style('color', function() {
                return getContrastYIQ(color(d.name));
            })
    })
    .on("mouseout", function(d) {
        div.transition()
            .duration(200)
            .style("opacity", 0);
    });
date.选择全部(“rect”)
.数据(功能(d){
返回d.mattel_数据;
})
.enter().append(“rect”)
.attr(“宽度”,x.rangeBand())
.attr(“y”,函数(d){
返回y(d.y1);
})
.attr(“高度”,功能(d){
返回y(d.y0)-y(d.y1);
})
.样式(“填充”,功能(d){
返回颜色(d.name);
})
.on(“鼠标悬停”,功能(d){
过渡部()
.持续时间(100)
.样式(“不透明度”,.9);
var hoverVal=(d.y1-d.y0);
var formatter=new Intl.NumberFormat('en-US'{
风格:“货币”,
货币:美元,
最小分数位数:2,
});
var pop=formatter.format(hoverVal);
//控制台日志(pop);
div.html(“值:“+pop+”
“+d.name”) .style(“左”(d3.event.pageX-140)+“px”) .style(“顶部”(d3.event.pageY-80)+“px”) .style('位置','绝对') .style('font-size','15px') .style('background',function(){ 返回颜色(d.name); }) .style('color',function()){ 返回getControlyIQ(颜色(d.name)); }) }) .开启(“鼠标出”,功能(d){ 过渡部() .持续时间(200) .样式(“不透明度”,0); });
看看这是否对你有帮助。
另外,如果您在这里发布代码,这将有助于更清楚地理解您的问题

您能提供一个JSFIDLE吗?我知道,在其他工具提示库中,您可以为它设置选项,使其显示您单击的位置或相对于容器的位置。您可以提供JSFIDLE吗?我知道,在其他工具提示库中,可以设置选项,使其显示在单击的位置或相对于容器的位置