我正在学习jQuery,所以它可能是某种误解。
考虑javascript:
var controls = $("#" + val.controltovalidate);
var input = controls[0];
var parent = input.parent();
var pos = parent.position;
首先我得到具有特定ID的元素列表,因为它在ASP.NET中我知道它只是一个元素,但我使用的是jQuery,它给了我列表。我还在前面添加“#”以使其正常工作。有更好的方法吗?
其次我得到实际元素(数组为0)HtmlInput
第三,我想找到它的容器而我正在做input.parent()
。这个调用为我返回NULL。为什么?我知道这个P
input
答案 0 :(得分:1)
使用closest();
var parent = $(input).closest('p');
答案 1 :(得分:1)
如果要在祖先层次结构中找到第一个$("#" + val.controltovalidate).parent()
元素,如果要查找直接父级和$("#" + val.controltovalidate).closest('p')
,则应该执行<p>
。
每个jQuery对象都是一个集合,所以不要担心这个事实并做任何你需要的事情。它只会影响一个DOM元素。
对于第二个问题:当您通过jQuery集合中的索引访问元素时,它将返回DOM元素。这就是你获得HTMLInputElement
的原因。
答案 2 :(得分:0)
尝试最后两行:
var pos = $(input).parent().position();