Javascript jQuery parent()函数返回空值

Javascript jQuery parent()函数返回空值,javascript,jquery,html,parent,Javascript,Jquery,Html,Parent,我有以下html(简化为基本设置): 这将运行,对于while循环的每个迭代,我将新元素(前一个元素的父元素)记录到控制台。这是我得到的结果: [<img id="image" src="image.png" onclick="findTheDiv(event)">] [<td>] [<tr>] [<table>] [] 它返回一个空白数组 [] 为什么jQuery说表没有父元素,因为除了之外的所有元素都有父元素?我对您的代码做了一些修改,它工

我有以下html(简化为基本设置):

这将运行,对于while循环的每个迭代,我将新元素(前一个元素的父元素)记录到控制台。这是我得到的结果:

[<img id="image" src="image.png" onclick="findTheDiv(event)">]
[<td>]
[<tr>]
[<table>]
[]
它返回一个空白数组

[]

为什么jQuery说表没有父元素,因为除了
之外的所有元素都有父元素?

我对您的代码做了一些修改,它工作得很好。我没有使用
事件
对象作为参数,而是传递
来引用直接触发事件的对象。这也有同样的目的

函数findTheDiv(elem){
//var elem=$(event.toElement);
var=false;
//如果到达顶层元素(html),则停止循环
while(!$(elem).is(“html”)){
如果($(elem).is(“div.findme”)){
发现=真;
打破
}
elem=$(elem.parent();
控制台日志(elem);
}
}

jQuery
最近的
功能已经提供了您正在寻找的功能,无需重新设计轮子:

函数findTheDiv(e){
var res=$(elem).closest('div.findme')
如果(相对长度){
console.log('foundit',res)
返回真值
}
console.log('映像不在'div.findme`'内)
返回错误
}


不是问题,但您应该将所有
$(elem)
替换为
elem
elem
已经是jQuery对象。请尝试在中断之前添加console.log;^你知道休息是什么吗?它终止循环。当
console.log
之前找到
div.findme
时,您正在调用break。所以你永远不会记录那个元素。@FelixKing-但问题是,循环永远不会终止,它永远继续,页面崩溃。所以现在我只需要循环来找到元素,我可以在中断之前存储元素为什么不使用
this
变量而不是
event
,这会使代码更具可读性和标准性?无需将参数传递到函数中!您的代码看起来有些模糊:(就像使用
elem
变量两次!好吧,我真的不明白为什么这对我不起作用。你的代码看起来应该起作用,但出于某种原因它不起作用。在
div.findme
中有许多其他元素,所有这些都按预期起作用,输出了
“找到它”
,但图像是唯一的这是行不通的。它是那些正在工作的人的兄弟!我发现了:图像有另一个由jQuery定义的click()方法,我忘记了,所以它调用了它。所以这个方法确实有效。谢谢!
[<img id="image" src="image.png" onclick="findTheDiv(event)">]
[<td>]
[<tr>]
[<table>]
[]
$("table").parent();
[]