2017-03-08 2 views
1

In der folgenden StrukturJQuery Finden nächsten Elternteil mit Klasse

<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> 

Wenn ich auf dem $ bin (‚# IMHere‘), wie ich den nächsten Elternteil mit einer Klasse finden und diesen Wert extrahieren? In diesem Fall hole thisOne (immer denkend, dass ich imheres Element stehe)

BEARBEITEN: die Klasse thisOneOknown wird automatisch erzeugt, also änderte sich das bei jedem Laden der Seite, so dass der Selektor den ersten Elternteil mit finden konnte Klasse und speichern/zurückgeben. Etwas wie var engsteParentClass = $ ('# imher'). Engste (": hasParent()");

+0

Scheint so einfach sein würde und finden Google es sei denn, Theres etwas, das ich fehle? Hast du [diese SO Frage hier gelesen] (http://stackoverflow.com/questions/5333426/how-to-find-a-parent-witho-a-known-class-in-jquery)? – crazymatt

+0

$ ("# imher"). Eltern ("[Klasse]"). Hinzufügen von Link zur Dokumentation https://api.jquery.com/has-attribute-selector/ – Jules

+0

Ja, ich vermisse ein sehr wichtiges Detail: Die Klasse thisOne ist mir unbekannt, so dass der Selektor .thisOne nicht meine Wahl ist. Tut mir leid, dass ich die Frage bearbeiten werde –

Antwort

3

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

Update nach editierte Frage:

Ich fürchte, ich verstehe nicht, was du jetzt fragst, ich werde jedoch eine Vermutung nehmen. So etwas wie die folgenden sollen Ihnen ermöglichen, jeden Elternteil zu testen, bis zu dem DOM root:

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

// element variable contains the matched DOM element 
+0

Sorry ich habe ein wichtiges Detail verpasst. ThisOne wird automatisch generiert, sodass ich .thisone als Selector nicht verwenden kann. Ich habe die Frage bearbeitet, um ein wenig mehr zu erklären –

+0

Ich habe meine Antwort basierend auf Ihrer Bearbeitung aktualisiert –

1

Sie Filter-Methode verwenden können, versuchen Sie dieses Beispiel, das ich für Sie zusammengestellt. Ich hoffe, das hilft dir.

$(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

Sorry, ich habe ein wichtiges Detail verpasst. ThisOne wird automatisch generiert, so dass ich .thisone als Selektor nicht verwenden kann –

+0

Ist das nicht Klasse für Tabelle? warum suchst du nicht stattdessen nach dem Tisch und filtern mit ID. –

Verwandte Themen