我在解决这里有什么问题时遇到了问题。我使用jQuery来查找元素,但是我没有使用jQuery找不到元素的父元素:
$rewrite = array(
'slug' => 'project',
'with_front' => true,
'pages' => true,
'feeds' => true,
);
使用上面的方法调用find_parent函数:
$(".selectbox").on("click", function(e) {
e = e || window.event;
var eTarget = e.target || e.srcElement;
find_parent(eTarget);
});
但是如果使用它来调用find_parent则会失败:
function find_parent (el) {
element_parent = el.parentElement;
}
我不是在寻找“为什么不使用jQuery parent()”的解决方案 - 而且它运行正常。我试图理解为什么普通的DOM方法不适用于jQuery返回的元素以及我做错了什么。
编辑:
上面的示例代码不是正在使用的实际代码,而是一个非常简化的版本来说明我的问题。实际的function someFunction {
selectBoxEl = $(".xyz").find('.selectbox');
find_parent (selectBoxEl);
}
函数是一个漫长而复杂的部分,它通过许多元素及其父级进行各种更新,并且它不使用jQuery。我想利用该代码,而不是在示例函数find_parent()
中为我的需要复制它。
答案 0 :(得分:2)
jQuery返回的元素被包装。使用find_parent(selectBoxEl[0]);
答案 1 :(得分:1)
由于您已经在使用jQuery,因此无需使用单独的函数来识别父DOM元素。 $('#id').parent()
返回父DOM元素。
如果你想使用.parentElement javascript方法,请使用以下方法。
$('#id')[0].parentElement
JQuery实际上并没有返回任何DOM元素,它只返回DOM对象的实例。 parentElement propery必须仅适用于DOM元素而不是实例对象。