0

我正在学习 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

4

3 回答 3

1

$("#" + val.controltovalidate).parent()如果要查找直接父级并且要查找祖先层次结构中$("#" + val.controltovalidate).closest('p')的第一个元素,则应该这样做。<p>

每个 jQuery 对象都是一个集合,所以不要担心这个事实并做任何你需要的事情。它只会影响一个 DOM 元素。

对于您的第二个问题:当您通过 jQuery 集合中的索引访问元素时,它将返回您的 DOM 元素。这就是为什么你得到HTMLInputElement.

于 2013-03-23T03:44:13.720 回答
1

利用closest();

var parent = $(input).closest('p');
于 2013-03-23T03:33:58.827 回答
0

尝试像这样的最后两行:

 var pos = $(input).parent().position();
于 2013-03-23T03:44:48.327 回答