2016-09-09 2 views
2

Angenommen, ich habe ein Element <a href="/foo#bookmark">. Ich möchte auf dieses Element durch seinen Hash verweisen, was ich mit jQuery tun kann. Wie würde ich das nur mit JavaScript machen?Verweis auf ein Element durch href-Hash ohne Verwendung von jQuery

Beispielcode:

<a id="foo" href="/foo#bookmark" onclick="exampleFunction(this)">Some text</a> 

<script> 
/** 
* @param {Element} el 
*/ 
function exampleFunction(el) { 
    let bookmarkHash = el.hash, 
     $bookmarkElement = jQuery(bookmarkHash); 

    console.info($bookmarkElement.offset().top); 
} 
</script> 

Hier jQuery(bookmarkHash) verweist auf die <a> so kann ich das des Elements versetzt zu bekommen. Wie kann ich das in reinem JavaScript machen?

+1

Sie auf das fuction in dem Element passiert, verwenden Sie einfach '$ bookmarkElement = $ (el);' –

+0

Ich will gar nicht jQuery verwenden. – ebakunin

+0

@ebakunin Du überträgst immer noch das Element, nicht wahr? Warum müssen Sie das Element durch seinen Hash referenzieren, wenn Sie es schon haben? – vlaz

Antwort

1

In Ihrem Skript jQuery(bookmarkHash); gibt jquery nur einen Selektor zurück. So können Sie das leicht austauschen.

/** 
 
* @param {Element} el 
 
*/ 
 
function exampleFunction(el) { 
 
    let bookmarkHash = el.hash, 
 
     $bookmarkElement = document.querySelector(bookmarkHash); 
 

 
    /* you will need to figure out the elements offset bit */ 
 
    console.info($bookmarkElement); 
 
}
<a id="foo" href="#bookmark" onclick="exampleFunction(this)">Some text</a> 
 
<div id="bookmark">Hello</div>

+1

'document.querySelector (bookmarkHash)' ist, was ich gesucht habe. Ich habe mein Problem nicht gut erklärt. Danke, dass du mir die Antwort gegeben hast! – ebakunin

+0

Ich bin froh, dass ich helfen konnte. – colecmc

Verwandte Themen