Obecnie 82 forumowiczów jest online
Obecnie 82 forumowiczów jest online
Porozmawiaj na temat implementacji kodu śledzenia w wielu domenach, ustaw śledzenie zdarzeń. Dowiedz się, czym jest Universal Analytics i jak korzystać z Menedżera tagów Google.
Poprowadź mnie
star_border
Odpowiedz

Śledzenie Kliknięć poprzez Nadrzędny Element HTML

Student ✭ ✭

Cześć,

 

mam następujący przykład DIV'a lub Paragraf (który ma różne id na różnych stronach).

 

1. <div id="zmienne_id"><p>jakiś tekst</p><a href="">jakiś link</a><p>jakiś tekst</p><img src="" /></div>

2. <p id="zmienne_id"><span>jakiś tekst</span><a href="">jakiś link</a><span>jakiś tekst</span><img src="" /></div>

 

I chciałbym się wyciągnąć informacje w której użytkownik klika w coś w obrębie tego elementu <div> lub <p> z powyższych przykładów, np w link, w obrazek lub w tekst.


Chciałbym wyciągnąć pierwszy nadrzędny element div lub p.

Z JS u mnie słabo więc proszę o w miarę przejrzyste wskazówki.

 

Z góry dzięki za pomoc
Pzdr

Dot.: Śledzenie Kliknięć poprzez Nadrzędny Element HTML

Nowicjusz ✭ ✭ ✭
Najlepiej coś w tym stylu:

var element = document.getElementById('zmienne_id').children[0];

W ten sposób do podanej zmiennej dopisany zostaje pierwszy element z id "zmienne_id".

Dot.: Śledzenie Kliknięć poprzez Nadrzędny Element HTML

Student ✭ ✭ ✭
{{Click Element}}.parentElement

To pozwoli Ci wyciągnąć nadrzędny element.

Dot.: Śledzenie Kliknięć poprzez Nadrzędny Element HTML

Student ✭ ✭

chyba nie do końca...bo w przypadku <p><a href=""><img src="" /></a></p> po kliknięciu w obrazach - wyciągnie znacznik <a>.

A ja chce wyciągnąć najbliższy <p> lub <div> . Ale już to mam i niedługo opublikuje to na blogu Emotikon: Bardzo szczęśliwy

Dot.: Śledzenie Kliknięć poprzez Nadrzędny Element HTML

[ Edytowane ]
Student ✭ ✭ ✭

Seba,

W tym wypadku tak, jednak w oryginale nie podałeś takiego przypadku (:

function myFunction(elementClicked) {
var foundElement = findNearest(elementClicked, "zmienne_id");
}
function findNearest (el, className) {
while ((el = el.parentElement) && el.getAttribute('id') != className);
return el;
}

Jeżeli dodatkowo chcesz, by były to jedynie elementy P i DIV, wystarczy zamienić w pętli warunek:
while ((el = el.parentElement) && (el.getAttribute('id') != className || (el.tagName != 'DIV' && el.tagName != 'P')));