2010-09-01 121 views
1

我试图用jQuery来访问一个DOM对象,该对象从我开始的DOM对象的代码中出现。 jQuery的遍历方法通常很容易,比如.parentsUntil。但是,在这种情况下,我试图找到的对象不是我从第一个对象开始的父对象或兄弟对象。jQuery - 当DOM元素不在同一棵树中时,选择与一个类匹配的前一个DOM元素

例如,设想这样的层次结构:

    • TR
      • TD上
      • TD乙
    • TR
      • TDÇ
        • 输入d

在输入d开始是有可能找到TD上的HTML()时,有可能是任何数量的A和D之间的元素?

感谢您的帮助,我很抱歉如果这太模糊,我会在需要时重写问题。

+0

我假设A B C和D不是ID,所以你不能直接选择A。他们是上课吗?纯文本内容?难道可能有多个As?多个表? – 2010-09-01 23:07:01

+0

正确,A B C和D不是ID。问题是输入D可以很容易地输入Z,并且我正在寻找HTML之前出现的第一个类。输入Z和td A之间的DOM树中可能没有关系。 – ianneub 2010-09-03 16:27:06

回答

2

我不确定你在问什么(请参阅我上面的评论)。因此,假设你想找到A类的td最接近元素D同时在DOM是“上面” D的HTML内容,你可以尝试这样的事:

$('input#D')  // somehow uniquely identify our starting point 
    .closest('tr') // up to the closest enclosing TR 
    .prevAll()  // and then get its preceding siblings 
    .has('td.B') // reduce this set to only those containing a td.B 
    .last()   // choose the last one (thus closest to 'D') 
    .find('td.B') // now work downward to td.B itself 
    .html();  // and get the content 

它关闭我的头顶,所以有可能是一个更有效的方式来做到这一点(而且没有经过测试),但也许这给你一些想法。

+0

谢谢!我认为这将适用于这种情况。你摇滚! – ianneub 2010-09-03 16:28:48

相关问题