我之前问过另一个问题here 但是,后来我意识到我的要求有点不同。上面引用的解决方案只带我到错误div,但我需要向上滚动到输入文本字段的标签上方。下面是html。
<label class="label_required" for="phone_num_key"></label>
<table class="table_Box">
<tbody>
<tr id="someId" class="redAlert">
<Some more mark up here>
</tr>
</tbody>
</table>
如何使用类'redAlert'向上滚动到标签而不是tr元素 我尝试了以下但它对我不起作用。
var errorDiv= $('.redAlert:visible').first();
var errorLabel = errorDiv.parent("table").prev("label");
// also tried this
//var errorLabel = errorDiv.closest("label").prev();
var scrollPosition = (errorLabel.offset().top);
$(window).scrollTop(scrollPosition);
看起来无法在标签上调用.offeset()函数?
编辑 - 请注意表单上有多个这样的标签,所以我基本上不能使用类选择器
答案 0 :(得分:1)
offset()
确实有用。问题是parent()
。
使用errorDiv.parents('table').prev('label');
FYI,
.parent([selector])
给定一个表示一组DOM元素的jQuery对象, .parent()方法允许我们通过这些父母进行搜索 DOM树中的元素并从中构造一个新的jQuery对象 匹配元素。 .parents()和.parent()方法类似, 除了后者只在DOM树上移动一个级别。
from http://api.jquery.com/parent/