2011-06-09 23 views
7

साथ नए टैब में लिंक मैं कुछ लिंक है कि JSON के माध्यम से गतिशील रूप से मेरा पेज में रखा जाता है और कोई रास्ता नहीं है उन्हें सीधे संपादित करने की कर रहे हैं। मैं नए टैब में खोलने के लिए, आला target="_blank"ओपन jQuery

सोचा यह काम करेगा सभी लिंक बाध्य करना चाहते हैं .. लेकिन दुर्भाग्य से ऐसा नहीं है। कोई विचार? http://jsfiddle.net/danielredwood/mrgta/7/

उत्तर

11

आप ऐसा कर सकता है (जो उपयोगकर्ताओं को ब्राउज़र की मदद से तय एक नई विंडो या टैब खोलने के लिए है कि क्या)

$('a').live('click', function() { 
    window.open($(this).attr('href')); 
    return false; 
}); 
+1

मुझे आश्चर्य है कि क्यों यह downvoted किया गया था? इसे विज्ञापित के रूप में काम करना चाहिए। एक तरफ ध्यान दें, मुझे 'लक्ष्य' विशेषता को '_blank' पर सेट करना पसंद है, जैसा कि अन्य उत्तरों में सुझाया गया था, क्योंकि मैं पुराना स्कूल हूं और यह अच्छी तरह से काम करता है। लेकिन यह विशेष समाधान --- यदि कोई भी ऐसी चीजों की परवाह करता है --- वास्तव में वह है जिसे किसी को सत्यापित करने की परवाह की जाती है (क्योंकि 'लक्ष्य' एक बहिष्कृत विशेषता है)। – Funka

+0

पीएस, कृपया इस पृष्ठ पर मेरा अलग उत्तर देखें, जो एक ही कारण के लिए इसी उत्तर का समर्थन करता है: समय। – Funka

2

यह काम करता है:

$('a').attr("target","_blank"); 

डायनामिक कोड के साथ एक jsFiddle है मेरे लिए:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
</head> 

<body> 


<a href="http://www.google.com">test</a> 
<br /> 
<a href="http://www.yahoo.com">test2</a> 

<script> 
    $('a').attr('target', '_blank'); 
</script> 

</body> 

</html> 
+0

यदि आप '' new'' को '_blank' से बदलते हैं तो क्या यह अभी भी आपके लिए काम करता है? सिर्फ पूछ रहे। यदि ऐसा होता है, तो शायद ओपी के अन्य मुद्दे हैं। अगर ऐसा नहीं होता है, तो मैं जानना चाहता हूं क्यों। – Sparky

+0

@ डेव मेपल - कोई पासा नहीं। प्रदर्शित करने के लिए एक jsFiddle लोड किया। प्रश्न – technopeasant

+0

@ स्पार्की 672 में पोस्ट किया गया - अच्छा बिंदु जो भी काम करता है। –

0

कोशिश करें:

$('a').attr({ target: "_blank" }); 

इसके अलावा, रिक्त स्थान के बजाय "_new" आज़माएं। अगर यह काम नहीं करता है, तो जेनरेट किए गए एचटीएमएल या अपने पूरे जावास्क्रिप्ट कोड को पोस्ट क्यों न करें?

0

यह काम नहीं कर रहा है क्योंकि <a> आपके पृष्ठ का हिस्सा अभी तक नहीं है जब $('a').attr("target","_blank"); निकाल दिया गया है।

+0

बस मेरे दिमाग को भी पार कर गया। उपाय? – technopeasant

+0

@ तकनीकी, मुझे यकीन नहीं है। – Sparky

5

आपकी समस्या समय में से एक हो सकता है।

ध्यान रखें, जब आप $('a').attr(...whatever...) की तरह कुछ कहते हैं, कि यह प्रभाव तुरन्त ले जाएगा किसी भी और सभी पृष्ठ पर मौजूदा तत्वों पर,। तो, ... यदि आपके tweet प्लगइन अतुल्यकालिक है और प्रदर्शन करने के लिए और अधिक से अधिक 0 मिलीसेकंड लेता है, यह अपने कोड की तरह लिंक कि भी अभी तक पृष्ठ पर मौजूद नहीं है पर विशेषताओं को बदलने के लिए कोशिश कर रहा है लग रहा है।

यही है, आप (ए) tweet प्लगइन को कॉल कर सकते हैं, (बी) पृष्ठ पर सभी लिंक बदल रहे हैं, और फिर (सी) ट्वीट प्लगइन पूरा हो गया है और उस पृष्ठ पर नए लिंक का एक गुच्छा इंजेक्ट करता है पहले।

तो, आप जो कोशिश कर सकते हैं, यह देखता है कि tweet प्लगइन जिसका उपयोग आप कर रहे हैं, उसके पास "सब-पूर्ण" या अन्य समापन कॉलबैक है, जिसका उपयोग आप लिंक टैग के चारों ओर बदलने के लिए कर सकते हैं। या, जैसा कि मैंने एक और जवाब सुझाया है, जिसे मैं भी समर्थन करता हूं, लिंक टैग को आज़माकर बदलने और बदलने के लिए नहीं है, बल्कि पृष्ठ पर किसी भी लिंक क्लिक पर सुनें (लाइव), और उस समय उन्हें उस समय पर रोक दें। इस तरह, आप के बाद से आप घटना प्रतिनिधिमंडल (live) जो समय में किसी भी बिंदु पर काम करता है इस्तेमाल कर सकते हैं, ट्वीट प्लगइन के समय/पूरा होने के बारे में चिंता करने की जरूरत नहीं है। इसे करने के तरीके के बारे में एक महान उदाहरण के लिए पेटा से जवाब देखें।

शुभकामनाएं!