Javascript jQuery position()返回的结果不正确,然后是正确的

Javascript jQuery position()返回的结果不正确,然后是正确的,javascript,jquery,html,css,wordpress,Javascript,Jquery,Html,Css,Wordpress,简单的一个(可能,认识我) 我正在向(Wordpress)网站添加一个元素。标准设置。没什么特别的 该行内容与此类似: jQuery('[id*="my-required-id-text"]').append('<div class="my-appended-div">A Div</div>') 令人恼火的是,我得到了所有的上下位置,完全一样。 更令人恼火的是,如果我要对类进行单击,并将console.log放在该类中的位置,它将显示我单击的任何一个类的正确位置 为什么

简单的一个(可能,认识我)

我正在向(Wordpress)网站添加一个元素。标准设置。没什么特别的

该行内容与此类似:

jQuery('[id*="my-required-id-text"]').append('<div class="my-appended-div">A Div</div>')
令人恼火的是,我得到了所有的上下位置,完全一样。 更令人恼火的是,如果我要对类进行单击,并将console.log放在该类中的位置,它将显示我单击的任何一个类的正确位置

为什么会这样?我在扯掉我的头发

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


非常感谢阅读。

很可能是因为您只是在控制台上多次记录.last()div。您得到的位置响应当然只会给您提供顶部和左侧位置,因为position()只提供与父对象的顶部和左侧偏移量--但同样,即使您正在循环,.last()div在循环时也不会改变。。。是同一个部门


当然,我可能是错的(你还没有发布你的代码),但我很有信心这就是问题所在。您可能希望使用不同的选择器执行循环(可能是将其用作选择器的选择器)。

我不确定您的问题,但请尝试在“每个”之后获得位置,如下所示:

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

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

“请假设我的…”不,你应该发布所有相关代码(包括HTML),以便我们这些愿意帮助你的人能够了解整个情况。呃
jQuery('.my added div')。last()
只获取最后一个,这里没有迭代?我没有包括迭代或代码的任何其他部分,因为我不希望其他事情与问题混淆。斯巴达克斯。“应该”意味着有一条规则。没有规则。我特意将这些信息隐藏起来,以避免混淆实际问题。不要告诉我什么是错的。祝你好运,AdamI am-在真实的代码中-正确地迭代每个div,而不仅仅是最后一个,因为每次迭代都会附加一个div,然后成为最后一个。对,我想说的是,因为javascript是异步的,所以可以通过append循环正确地循环,但是当您到达console.log问题时,循环已经完成,所以它只是打印出last()div x的次数。好的,我明白你的意思。以前没有。谢谢你进一步解释。我在测试过程中一直在添加ID,但在特别针对目标时得到了相同的结果。然而,我现在将回到那个测试,以避免您描述的场景。进行了更深入的研究。这让我找到了解决办法,真是感激不尽。标记为回答。很高兴它有帮助。这完全是一个“陷阱”,可能会让所有接触过Javascript的开发人员都绊倒,所以这是一件值得学习的事情!我知道你在尝试什么。我得到了jQuery。每个(…)。承诺不是一个函数。
$objects.each(function(){
  ...
}).promise().done(function(){
  $('.my-appended-div').last().position();
});