2013-03-27 13 views
25

Ich habe ein großes div darin, die kleinere divs, achor Tags und andere Elemente sind. Jedes große div in meinem Programm ist an "mousedown" -Ereignis gebunden und innerhalb des onMouseDown-Handlers überprüfe ich im Wesentlichen das event.target.Überprüfen Sie, ob das Ereignisziel ein Hyperlink ist.

Wenn ein Benutzer auf ein Element klickt, das ein Hyperlink ist, möchte ich überprüfen, ob event.target ein Hyperlink ist, und dann zu diesem Link navigieren, wenn event.target ein Hyperlink ist. Wie kann das gemacht werden?

Hier ist die Struktur der Divsa und Elemente.

<div class="camp-name"> 
    <span class="btnCampaign"><div class=""></div></span> 
    <span class="campaign-name"> 
     <a href="http://www.google.com">Some Link here</a> 
    </span> 
</div> 
<div class="campaign-name-sub"> 
    <span class="campaign-accountname">Some Text here</span> 
    <span class="seprator">|</span> 
    <span class="brandname">Some Text here</span> 
</div> 

JS

var label = label.createElement("DIV"); 
label.innerHMTL = src //src is the above html that is seen here 
    Plugin.addEventListener(label, "mousedown", params.onMouseDown); 


Plugin.onMouseDown() = function(event) { 
var target = (event.currentTarget) ? event.currentTarget : event.srcElement; 
     if (target.tagName.toLowerCase() === "a" && target !== undefined) { 
      console.log(target.href); 
      Plugin.stopPropagation(event); 
     } 
}; 
+0

können Sie etwas Code ausgeben .... wie Ihre divs organisiert sind und Sachen – theshadowmonkey

+0

Ich denke, dass das Ereignis von der Eltern DIV behandelt wird. Probieren Sie console.log (Ereignis) in Chrome vorzugsweise und Sie sollten alle Parameter sehen, die Sie manipulieren können. Ich denke, das sollte in irgendeiner Richtung helfen – theshadowmonkey

Antwort

55

Sie sollten es durch bekommen

if(event.target.tagName.toLowerCase() === 'a') 
{ 
    event.target.href; //this is the url where the anchor tag points to. 
} 
+0

und vergleichen Sie es mit was? (Ich weiß, aber Sie sollten es für eine vollständige Antwort einschließen.) – Mathletics

+0

Das bedeutet if (event.target.tagname === 'a') {window.location.href = event.target}. Wie ist das richtig in JavaScript geschrieben? – user1240679

+0

bearbeitet die Antwort –

0

Ich habe versucht, den Code zu modifizieren und es gab mehrere Probleme mit dem Code und korrigiert sie.

Dies ist der Teil JavaScript

var src = '<div class="camp-name"><span class="btnCampaign"><div class=""></div></span><span class="campaign-name"><a href="http://www.google.com">Some Link here</a></span></div>'; 

var label = document.createElement('DIV') 
label.innerHTML = src; 
var topdiv = document.getElementById("test"); 
console.log(label) 
topdiv.appendChild(label); 

label.addEventListener('click', test, false); 

function test(event) { 
    if(event.target.tagName.toLowerCase() === 'a') { 
     var href = event.target.href; 
     console.log(href); 
    } 
    window.location = href; 
}; 

Dies ist der HTML-Teil davon

<div id="test"> 
test 
</div> 

ich dies in einer mir jsfiddle http://jsfiddle.net/KDejm/1/

tat Bitte lassen Sie wissen, ob die Entlüftung ist richtig erfasst.

+0

Das Problem hier ist, dass ich unaufdringliches Javascript ohne Verwendung spezifischer ID/Klasse schreiben möchte, wenn ich etwas wie find() schreibe (wahrscheinlich ist die Suche nach einem Tag noch in Ordnung, wenn "a" da ist, dann navigiere dorthin) Wenn ich auf ein anderes Element als das a-Tag klicke, möchte ich nicht zu diesem Tag-Link navigieren. Stattdessen Dinge von diesem mouseDown Ereignis, das ich bereits – user1240679

+0

bearbeitet habe ... setzen Sie einfach den window.location Teil in das if :) – theshadowmonkey

+0

In meinem Javascript habe ich ein größeres div und wie ich in meinem Beitrag schrieb, dass größer div ist Holen Sie die HTMl von irgendwo und zeigen Sie es durch '.innerHTML' an. Dieses größere div ist das, an das das 'mousedown'-Ereignis gebunden ist, und ich darf diesen bestimmten Code nicht ändern. Also, im Wesentlichen suchte ich nach einem Weg, durch den ich überprüfen kann, ob event.target ein Anchor-Tag hat (falls ja, dann navigieren). Außerdem ist jQuery jetzt wegen des vorherigen Kodierungsstils nicht erlaubt. – user1240679

Verwandte Themen