2009-04-29 9 views
54

चलो कहते हैं कि मैं निम्नलिखित कोड डालें:मैं एक निर्दिष्ट div के भीतर एक लिंक में लक्ष्य = "_ खाली" कैसे जोड़ूं?

<div id="link_other"> 
    <ul> 
     <li><a href="http://www.google.com/">google</a></li> 
     <li> 
      <div class="some_class"> 
       dsalkfnm sladkfm 
       <a href="http://www.yahoo.com/">yahoo</a> 
      </div> 
     </li> 
    </ul> 
</div> 

इस मामले में, जावास्क्रिप्ट div link_other भीतर सभी लिंक को target="_blank" जोड़ना होगा।

मुझे लगता है कि जावास्क्रिप्ट का उपयोग कैसे कर सकते हैं?

+0

क्यों नहीं जावास्क्रिप्ट का पता लगाने के जो लिंक बाहरी हैं? – James

उत्तर

113
/* here are two different ways to do this */ 
//using jquery: 
$(document).ready(function(){ 
    $('#link_other a').attr('target', '_blank'); 
}); 

// not using jquery 
window.onload = function(){ 
    var anchors = document.getElementById('link_other').getElementsByTagName('a'); 
    for (var i=0; i<anchors.length; i++){ 
    anchors[i].setAttribute('target', '_blank'); 
    } 
} 
// jquery is prettier. :-) 

तुम भी उपयोगकर्ता है कि आप यह कर रहे हैं, उन्हें चेतावनी देने के लिए सूचित करने के लिए एक शीर्षक टैग जोड़ सकते हैं, के रूप में बताया गया है, क्योंकि यह नहीं क्या उन की उम्मीद:

$('#link_other a').attr('target', '_blank').attr('title','This link will open in a new window.'); 
+0

आपको बहुत धन्यवाद। यह आकर्षण – kakkalo

+8

की तरह काम करता है उसने जावास्क्रिप्ट के लिए पूछा, jQuery नहीं। – Mark

5

jQuery का उपयोग करना:

$('#link_other a').each(function(){ 
    $(this).attr('target', '_BLANK'); 
}); 
+1

एस/fcuntion/समारोह/ –

+1

तुम सिर्फ नहीं कर सकते:। $ ('# Link_other एक') attr ('लक्ष्य', '_blank'); ? –

+0

कम है:। $ ('# link_other एक') attr ('लक्ष्य', '_blank'); artlung रूप getAttributesByTagName के बजाय –

41

गैर jQuery:

// Very old browsers 
// var linkList = document.getElementById('link_other').getElementsByTagName('a'); 

// New browsers (IE8+) 
var linkList = document.querySelectorAll('#link_other a'); 

for(var i in linkList){ 
linkList[i].setAttribute('target', '_blank'); 
} 
+3

तैनात है, यह getElementsByTagName नहीं होना चाहिए? –

+1

अच्छी कॉल - वेनिला जावास्क्रिप्ट लिखने के लिए –

+4

+1 तय करें। –

6

याद रखिए कि यह कर वेब डेवलपर्स और प्रयोज्य विशेषज्ञों द्वारा सामान्य रूप में बुरा व्यवहार माना जाता है। "वापस जाएं" उन से दूर ले जा रही है ताकि दर्दनाक यह है कि आमतौर पर अब तक उनके अनुभव कर सकते हैं -

बचें कई ब्राउज़र विंडो को उत्पन्न करने के यदि संभव हो: Jakob Nielson इस उपयोगकर्ता के नियंत्रण को हटाने ब्राउज़िंग अनुभव के बारे में क्या कहना है जो भी लाभ आप प्रदान करने की कोशिश कर रहे हैं उससे अधिक है। दूसरी खिड़की को बढ़ाने के पक्ष में एक आम सिद्धांत यह है कि यह उपयोगकर्ताओं को आपकी साइट छोड़ने से रोकता है, लेकिन विडंबना यह है कि जब वे चाहते हैं तो उन्हें लौटने से रोककर इसका विपरीत प्रभाव हो सकता है।

मेरा मानना ​​है कि इस लक्ष्य विशेषता के लिए तर्क एक्सएचटीएमएल 1.1 कल्पना से W3C द्वारा हटाया जा रहा है।

आप इस दृष्टिकोण लेने पर मृत सेट कर रहे हैं, पिम Jager के समाधान अच्छा है।

एक अच्छे, और अधिक उपयोगकर्ता के अनुकूल विचार है, अपने बाहरी लिंक के सभी के लिए एक ग्राफिक संलग्न करने के लिए, उपयोगकर्ता कि लिंक का पालन उन्हें बाहर ले जाएगा करने के लिए यह दर्शाता है किया जाएगा।

आप jQuery के साथ ऐसा कर सकता है:

$('a[href^="http://"]').each(function() { 
    $('<img width="10px" height="10px" src="/images/skin/external.png" alt="External Link" />').appendTo(this) 

}); 
+0

जबकि मैं ज्यादातर जो कह रहा हूं उससे सहमत हूं, मुझे लगता है कि लक्ष्य खाली है और "rel = 'external'" चाल में उनकी जगह है, खासकर जब आप एक पीडीएफ से जुड़ रहे हैं। –

+0

rel = "external" दिलचस्प है - http://www.sitepoint.com/article/standards-compliant-world/3/ - हालांकि ऐसा लगता है कि इसे काम करने के लिए जावास्क्रिप्ट के साथ संयोजन में उपयोग करने की आवश्यकता है । यह आपको अपने एचटीएमएल में अस्वीकृत xhtml विशेषता "लक्ष्य" ऑनलाइन का उपयोग करने से बचने की अनुमति देता है। हालांकि इसका उल्लेख करने के लिए धन्यवाद, माइक। rel = "बाहरी" निम्नलिखित लायक है। :-) – artlung

+0

क्या होगा यदि कोई गैर-बाहरी लिंक का href http: // से शुरू होता है? – James

1

इनलाइन:

$('#link_other').find('a').attr('target','_blank'); 
0

हर बाहरी लिंक

$('a[href^="http://"], a[href^="https://"]').attr('target', '_blank'); 
3

के लिए इसका उपयोग करें मैं हर बाहरी लिंक के लिए इस का उपयोग करें:

window.onload = function(){ 
    var anchors = document.getElementsByTagName('a'); 
    for (var i=0; i<anchors.length; i++){ 
    if (anchors[i].hostname != window.location.hostname) { 
     anchors[i].setAttribute('target', '_blank'); 
    } 
    } 
} 
+0

यह मेरे लिए पूरी तरह से काम करता है, यहां तक ​​कि '' '''' लिंक के साथ एक निर्दिष्ट कक्षा है। धन्यवाद! – Supertecnoboff

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