我们动态创建一个错误容器,将其附加到正文中,然后将其定位到错误所在的元素处。这很好用,直到用户滚动。错误容器保持在相同的固定位置,而元素在后台滚动出屏幕。如何在滚动事件期间重新定位错误元素以使其也滚动?
屏幕截图显示了我们的错误容器的样子。需要在用户滚动时重新定位和滚动容器,以便它与它所针对的元素保持一致。目前,它保持在一个固定的位置。
现在,当错误处于可以滚动的位置时。注意它是如何正确显示的。
现在请注意,在页面滚动后,错误不再停留在它所针对的元素中。我需要在滚动时使用元素的新位置正确重新定位此元素。
提前致谢!
我知道没有代码很难回答问题,但我必须小心,因为这是公司的事情。
这是我在“validation.js”库中构建容器的地方,作为我们正在使用的模板的 jsViews 包的一部分。
buildContainer: function(ev)
{
var $targetElem = $(ev.target),
leftX = $targetElem.offset().left,
topY = $targetElem.offset().top,
widthY = $targetElem.outerWidth(),
heightX = $targetElem.outerHeight();
var msg = $targetElem.closest("label").val();
var appendingContainer = null;
$targetElem.closest("label").val('');
return $('<div/>', {
html: '<ul>' + this.isValid + '</ul><span></span>',
'class': 'validation-tooltip-error',
css: {
top: topY - heightX,
left: leftX + widthY - 20
}
}).appendTo("body");
}
这是错误容器的 CSS:
.validation-tooltip-error { 位置:绝对;宽度:自动;z-index:9999999999;}
.validation-tooltip-error ul
{
padding: 0;
margin: 0;
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
font-weight: bold;
text-align: left;
color: #eeeeee;
background: #a9502a;
padding: 10px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
list-style: none;
line-height: 16px;
-moz-box-shadow: 0 -2px 4px #666666;
-webkitbox-shadow: 0 -2px 4px #666666;
box-shadow: 0 -2px 4px #666666;
}
.validation-tooltip-error span
{
display: block;
width: 0;
height: 0;
border-left: 0 solid transparent;
border-right: 15px solid transparent;
border-top: 10px solid #a9502a;
border-top: 10px solid #a9502a;
border-bottom: 0;
margin-left: 10px;
}
希望这会有所帮助。