jQuery position()返回错误,然后更正,结果

时间:2017-06-28 15:51:40

标签: javascript jquery html css wordpress

简单的(可能,知道我)

我将一个元素附加到(Wordpress)网站。标准设置。没什么特别的。

该行的内容类似于:

jQuery('[id*="my-required-id-text"]').append('<div class="my-appended-div">A Div</div>')

现在,我的问题是,如果我当时使用:

循环遍历每个附加的div位置
console.log(jQuery('.my-appended-div').last().position())
< - >我 - 恼人地 - 得到所有的顶部和左侧位置,完全一样。 更令人恼火的是,如果我要点击该类,并将console.log放在该位置,它将显示正确的位置,无论我点击哪一个。

这是为什么?我正在撕裂 - 剩下的 - 我的头发了。

我知道我有点模糊,但请假设我的CSS和其他相关代码是正确的。我只是想知道为什么位置被错误地检测到并且与所有其他(视觉上不同放置的)div一样,但是在运行循环之后立即(是的,这是一个根据馈送到它的数据量输出div的循环),以及将输出分配给另一个事件,这些位置突然全部正确登录。

非常感谢您阅读。

2 个答案:

答案 0 :(得分:0)

它出现的方式很可能是因为您只是多次控制登录.last()div。你获得的位置响应当然只会给你左上角和左上位置,因为position()只给你父亲的上下左移 - see the docs - 但是,即使你和# 39;重新循环,.last()div在循环时不会改变......它是相同的div。

当然,我可能错了(你还没有发布你的代码),但我对这个问题很有信心。您可能希望使用不同的选择器进行循环(可能是使用 this 作为选择器的选择器)。

答案 1 :(得分:0)

我不确定你的问题,但试着在“每个”之后找到位置:

$objects.each(function(){
  ...
}).promise().done(function(){
  $('.my-appended-div').last().position();
});

精度不高:position()取决于此父级,offset()取决于窗口。