简单的(可能,知道我)
我将一个元素附加到(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的循环),以及将输出分配给另一个事件,这些位置突然全部正确登录。
非常感谢您阅读。
答案 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()取决于窗口。