2013-03-27 4 views
25

मेरे अंदर एक बड़ा div है जो छोटे divs, एंकर टैग और अन्य तत्व हैं। मेरे कार्यक्रम में प्रत्येक बड़ा div "mousedown" ईवेंट और ऑनसाउसडाउन हैंडलर के अंदर है, मैं मूल रूप से event.target की जांच करता हूं।जांचें कि ईवेंट लक्ष्य हाइपरलिंक

यदि कोई उपयोगकर्ता एक हाइपर लिंक वाले आइटम पर क्लिक करता है, तो मैं यह जांचना चाहता हूं कि event.target हाइपरलिंक था और फिर event.target एक हाइपरलिंक था, तो उस लिंक पर नेविगेट करें। वह कैसे किया जा सकता है?

यहां divsa और तत्वों की संरचना है।

<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> 

जे एस

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

क्या आप कुछ कोड डाल सकते हैं .... जैसे कि आपके divs व्यवस्थित होते हैं और – theshadowmonkey

+0

मुझे लगता है कि घटना माता-पिता डीआईवी द्वारा संभाली जा रही है। क्रोम में console.log (ईवेंट) को प्राथमिकता से आज़माएं और आपको उन सभी पैरामीटर को देखना चाहिए जिन्हें आप कुशल बना सकते हैं। मुझे लगता है कि कुछ दिशा में मदद करनी चाहिए – theshadowmonkey

उत्तर

55

आप इसे माध्यम से

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

देखें और इसकी तुलना किस से करें? (मुझे पता है, लेकिन आपको इसे एक पूर्ण उत्तर के लिए शामिल करना चाहिए।) – Mathletics

+0

इसका मतलब है कि अगर (event.target.tagname === 'a') {window.location.href = event.target}। यह जावास्क्रिप्ट में सही ढंग से लिखा गया है? – user1240679

+0

ने उत्तर –

0

मैं अपने कोड को संशोधित करने की कोशिश की मिलना चाहिए और वहाँ कोड के साथ कई समस्याएं थीं और उन्हें ठीक कर दिया।

यह 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; 
}; 

यह वह जगह है इसके बारे में एचटीएमएल हिस्सा

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

मैं एक jsfiddle http://jsfiddle.net/KDejm/1/

में ऐसा किया कृपया मुझे बताएं कि वेंट है चलो है सही ढंग से कब्जा कर लिया।

+0

यहां समस्या यह है कि मैं विशिष्ट आईडी/कक्षा का उपयोग करके अनजान जावास्क्रिप्ट लिखना चाहता हूं यदि कुछ लिखने() (शायद एक टैग की तलाश में है, तो इस अर्थ में अभी भी ठीक है कि अगर 'कोई' है, तो उसे नेविगेट करें) यदि मैं एक टैग के अलावा किसी तत्व पर क्लिक करता हूं, तो मैं उस टैग लिंक पर नेविगेट नहीं करना चाहता हूं। इसके बजाए उस माउसडाउन घटना से सीमेट करें जो मेरे पास पहले से – user1240679

+0

संपादित है ... बस विंडो के अंदर विंडो.लोकेशन हिस्सा डालें :) – theshadowmonkey

+0

मेरे जावास्क्रिप्ट में, मेरे पास एक बड़ा div है और जैसा कि मैंने अपनी पोस्ट में लिखा है, वह बड़ा div है कहीं से HTMl प्राप्त करना और इसे '.innerHTML' द्वारा प्रदर्शित करना। वह बड़ा div वह है जिसकी 'मूसडाउन' घटना बाध्य है और मुझे उस विशेष कोड को बदलने की अनुमति नहीं है। तो, संक्षेप में, मैं एक ऐसे तरीके की तलाश में था जिसके माध्यम से मैं जांच सकता हूं कि event.target में एंकर टैग है (यदि यह है, तो नेविगेट करें) इसके अलावा, पूर्व कोडिंग शैली के कारण अब कोई jQuery अनुमति नहीं है। – user1240679

संबंधित मुद्दे