节点的setXY函数未将xy位置设置为0,0

时间:2013-10-30 05:28:18

标签: javascript dom yui3

我必须在输入框旁边显示一个div,但是这个div直接位于正文下方,而不像输入框下面的许多div。

所以场景是我有很多输入,我想在这个div内容中显示一些错误。我检查在模糊处输入的内容,然后无论哪个模糊的输入,我取这个输入框的位置,我的div的setXY位置,并取消隐藏它。

代码:

var input=Y.one("#input1");
var errorDiv=Y.one('#errorDiv');

input.on('blur',function(e){
  var xy=input.getXY();
  errorDiv.setXY([xy[0]+30,xy[1]]);
  errorDiv.removeClass('hide');
});

我面临的问题是setXY第一次无效。只有在我第二次改变焦点后,setXY才会放置正确的位置。 在调试过程中,我发现在这个语句errorDiv.setXY([xy[0]+30,xy[1]]);之后,错误div的xy位置仍为0,0。

有人可以告诉我这里我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

我相信您需要交换处理errorDiv外观的顺序。因此,不要设置一个位置然后取消隐藏,尝试取消隐藏div,然后改变它的位置。

只需更改 this:

即可
  errorDiv.setXY([xy[0]+30,xy[1]]);
  errorDiv.removeClass('hide');

this。

  errorDiv.removeClass('hide');
  errorDiv.setXY([xy[0]+30,xy[1]]);

我创建了demo来证明这一变化。

之前我遇到过这个问题,而且我完全确定它为什么会发生,因为我没有深入研究它,但我的理论是它与它有关要求元素首先可见,以便进行适当的坐标计算。希望这会有所帮助。