2016-07-11 15 views
0

Stellen Sie sich vor ich ein div mit ein paar Nachkommen/Kinder als solche haben:Wie kann ich einen Ausdruck erstellen, der bewertet, ob die Nachkommen eines Elternteils aktiv sind oder nicht?

<div id="parent" tabindex="0"> 
    <h1 tabindex="0"> my Header </h1> 
    <p tabindex="0"> some text </p> 
    <ul tabindex="0"> 
    <li tabindex="0"> item 1 </li> 
    <li tabindex="0"> item 2 </li> 
    <li tabindex="0"> item 3 </li> 
    </ul> 
</div> 

Wie kann ich einen Ausdruck erstellen, ob ein Kind der ‚Eltern‘ überprüft div aktiv ist/Fokus hat? Ich möchte eine Aktion durchführen (zB: Konsolenprotokoll), wenn die Aussage wahr ist.

Ich stelle mir würde es gehen so etwas wie:

if(document.activeelement === <descendant of 'parent' div>) { 
    console.log("descendant is active"); 
    } 

EDIT: Aus Gründen der Klarheit: Die Auswertung als 'if' Anweisung auftreten sollte. Der Ausdruck sollte so übersetzen:

Wenn mein aktives Element ein Elternteil mit einer ID von 'Eltern' hat, dann tu etwas.

+1

Unter welchem ​​Kontext? Was hast du bisher versucht? –

+0

@MikeC Ich bin nicht ganz sicher, die Syntax, um den Ausdruck zu erstellen, ist mein Denkprozess über –

+0

enthalten Wenn Sie jQuery verwenden, haben Sie in die [': Fokus' Selektor?] (Http: // api. jquery.com/focus-selector/) Wie wäre es mit der ['.parents()' Methode?] (https://api.jquery.com/parents/) Wenn Sie wissen, wie Sie das DOM mit jQuery abfragen und diese verstehen können zwei Funktionen, die Antwort wird auf dich herausspringen. –

Antwort

0

Kennen Sie die ID der Eltern und die Klassennamen der Kinder? oder werden diese basierend auf dem, was geklickt wird, dynamisch sein? Wenn Sie den Selektor des übergeordneten Elements und der untergeordneten Elemente kennen, wird im Folgenden ein Element li erfasst, das ein untergeordnetes Element oder unmittelbar untergeordnetes Element des Elements #parent ist, das aktiv ist. wenn es leer ist, dann keines dieser Registerkarten

$(#parent li:focus) 

mit diesem jQuery-Selektor fokussiert sind, fordern wir für jede li Kind des #parent Element, das aktiv ist (:focus).

0

können Sie click verwenden, keydown, keyuyp Ereignisse an document, $("#parent [tabindex]") Selektor, .is(), :focus

function checkFocus() { 
 
    console.log("descendant is active:" 
 
       , $("#parent [tabindex]").is(":focus") 
 
       , this.activeElement.tagName) 
 
} 
 

 
$(document).on("click keydown keyup", checkFocus)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent" tabindex="0"> 
 
    <h1 tabindex="0"> my Header </h1> 
 
    <p tabindex="0">some text</p> 
 
    <ul tabindex="0"> 
 
    <li tabindex="0">item 1</li> 
 
    <li tabindex="0">item 2</li> 
 
    <li tabindex="0">item 3</li> 
 
    </ul> 
 
</div>