Ich versuche, einen Elementspeicherort innerhalb des DOM abzurufen, wenn darauf geklickt wird. So könnte es verwendet werden, um ein ausgewähltes Element in einem Vorschaufenster dynamisch zu erzeugen.Jquery - Ermitteln der Elementposition im DOM
Zum Beispiel unter der Annahme, ich habe eine Onclick Funktion auf jedem Element in der Seite ausgeführt wird, wenn ein Element geklickt wird Ich möchte einen Wert haben, wie zum Beispiel:
div#a > ul.list > li:nth-child(3) > span
Wenn ein Benutzer auf der dritten Spanne geklickt in die Seite unten:
<html>
<body>
<div id="a">
<ul class="list">
<li><span>first</span></li>
<li><span>second</span></li>
<li><span>third</span></li>
<li><span>fourth</span></li>
</ul>
</div>
</body>
</html>
Ich habe das Internet durchsucht und ein paar alte Funktionen ausprobiert, die herum lagen, aber keine scheinen zu funktionieren.
Ich könnte einen Code wie unten verwenden, und dann durch alle Eltern durchlaufen, bis ich Körper treffe, aber das scheint übermäßig.
$("body *").click(function() {
//retrieve current element information
//retrieve tag name
var tag = $(this).prop("nodeName");
//retrieve id list
var ids = $(this).prop("id");
//replace whitespace with hash
var ids = ids.replace(/\s/g, "#");
//retrieve class list
var classes = $(this).attr("class");
//replace whitespace with point
var classes = classes.replace(/\s/g, ".");
//add ids and classes to tag name
var current_element = tag + "#" + ids + "." + classes;
});
Gibt es bessere Möglichkeiten?
Ich sehe nicht schneller als durch alle Eltern Looping. Du könntest [elementsFromPoint] (https://developer.mozilla.org/en-US/docs/Web/API/Document/elementsFromPoint) verwenden, aber es wird noch nicht von allen Browsern da draußen unterstützt (Safari sehe ich dich an) und ich denke, es könnte tatsächlich langsamer sein. –
Mögliches Duplikat von https://stackoverflow.com/questions/4588119/get-elements-css-selector-when-it-doesnt-have-an-id – flatline
Mögliche Dupe: http://stackoverflow.com/questions/5706837/get-unique-selector-of-element-in-jquery – Riddell