2017-03-08 59 views
1

类最接近父在下面的结构JQuery的查找与

<div class="thisNot"> 
    <table style="width:100%" class="thisOneUknow"> 
     <tr> 
     <th id="imhere">Firstname</th> 
     <th>Lastname</th> 
     <th>Age</th> 
     </tr> 
     <tr> 
     <td>Jill</td> 
     <td>Smith</td> 
     <td>50</td> 
     </tr> 
     <tr> 
     <td>Eve</td> 
     <td>Jackson</td> 
     <td>94</td> 
     </tr> 
    </table> 
</div> 

如果我在$(“#imhere”),我如何才能找到一类最接近的父母和提取价值?在这种情况下获得thisOne(总以为是我站在imhere元素)

编辑:自动生成的类thisOneOknown,所以这个改变在每个页面加载,所以选择已经能够找到的第一个父同类并存储/返回它。 Somethinng like var closestParentClass = $('#imhere')。closest(“:hasParent()”);编辑的问题后

+0

看起来这将是简单的谷歌和发现,除非那里有我丢失的东西?你有没有[在这里读过这个问题](http://stackoverflow.com/questions/5333426/how-to-find-a-parent-with-a-known-class-in-jquery)? – crazymatt

+0

$(“#imhere”)。parents(“[class]”)。添加链接到文档https://api.jquery.com/has-attribute-selector/ – Jules

+0

是的,我错过了一个非常重要的细节:类thisOne对我来说是未知的,所以选择器.thisOne不是我的选择。对不起,我要编辑的问题 –

回答

3

$('#imhere').closest('.thisOne');

更新:

恐怕我不明白你现在要问什么,但我会采取一种猜测。像下面这样的东西应该让你测试每个父母到DOM根:

var element = $($('.lobster')[6]); 
while((element = element.parent()).length){ 
    if(element.is('table')){ 
     break; 
    } 
} 

// element variable contains the matched DOM element 
+0

对不起,我错过了一个重要的细节。 ThisOne是自动生成的,所以我不能使用.thisone作为选择器。我编辑了这个问题来解释更多 –

+0

我已根据您的编辑更新了我的答案 –

1

您可以使用过滤器的方法,尝试这个例子中,我放在一起给你。我希望这可以帮助你。

$(function() { 
 
    var tt= finder('.thisOne','#imhere'); 
 
    $('.result').append('<div>data found:'+tt.length+'</div>'); 
 
    
 
    // some unknow class 
 
    var ss= finder('.thisOne','#imNothere'); 
 
    $('.result').append('<div>data found:'+ss.length+'</div>'); 
 
    
 
}); 
 

 
function finder(searchMe, checkMe){ 
 
    return $(searchMe).filter(function(index) { 
 
    return $(this).find(checkMe).length > 0; 
 
    }); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="thisNot"> 
 
    <table style="width:100%" class="thisOne"> 
 
    <tr> 
 
     <th id="imhere">Firstname</th> 
 
     <th>Lastname</th> 
 
     <th>Age</th> 
 
    </tr> 
 
    <tr> 
 
     <td>Jill</td> 
 
     <td>Smith</td> 
 
     <td>50</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Eve</td> 
 
     <td>Jackson</td> 
 
     <td>94</td> 
 
    </tr> 
 
    </table> 
 
</div> 
 
<div class="result"></div>

+0

对不起,我错过了一个重要的细节。 ThisOne是自动生成的,所以我不能使用.thisone作为选择器 –

+0

这不是表类吗?为什么你不用查找表而是用ID过滤。 –