2011-08-08 11 views
29

इस आलेख को पढ़ने के बाद net.tutsplus.com/tutorials/javascript-ajax/14-helpful-jquery-tricks-notes-and-best-practices/ मुझे यह निष्कर्ष निकाला गया कि का उपयोग करके यह.href अधिक कुशल है।

हालांकि, जब मैंने अपनी परियोजनाओं में से किसी एक पर इसका उपयोग करने की कोशिश की, तो मैंने देखा कि यह.href न केवल href देता है बल्कि वेबसाइट का यूआरएल भी जोड़ता है। उदाहरण के लिए <a href="tab-04"></a>यह.hrefhttp://example.com/abc/tab-04 और $ (this) .attr ('href') केवल टैब -4 लौटाएगा।

आप यहां एक उदाहरण देख सकते हैं http://jsfiddle.net/UC2xA/1/

$ (यह) .attr ('href') हालांकि मुझे वही देता है जो मुझे चाहिए और कुछ भी नहीं।

मेरा प्रश्न यह है, मैं कैसे पुनर्लेखन कर सकते हैं (या क्या आवश्यक है) तो this.href है कि यह केवल टैब-04 वापसी होगी है?

संपादित

डौग आप

this.getAttribute('href')

+4

आप सही मूल्य चाहते हैं 'href' विशेषता (वह जिसे HTML स्रोत कोड में हार्ड-कोड किया गया है) का उपयोग करें, फिर' $ (this) .attr ('href') 'का उपयोग करें। अगर आप पूरी तरह योग्य यूआरएल चाहते हैं, तो 'this.href' का उपयोग करें। –

+0

यदि आप इसकी क्षमता के कारण यह.href का उपयोग कर रहे हैं और फिर इसे 'अधिक करें' के लिए फिर से लिखें; इस तरह के उद्देश्य को हरा देता है। – Joey

+0

-1 "मैं निष्कर्ष निकाला कि इसका उपयोग कर रहा है। एचआरएफ अधिक कुशल है।" नहीं, वास्तव में नहीं, लेकिन आप निश्चित रूप से [बहुत जल्दी अनुकूलन कर रहे हैं] (http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize)। दक्षता में बदलाव की बाधाओं, यदि यह भी मौजूद है, तो पता लगाने योग्य शून्य के पास होगा। – Malvolio

उत्तर

51

href सादे जावास्क्रिप्ट में संपत्ति से संबंधित अर्थपूर्ण होगा। यह गंतव्य यूआरएल देता है जो लिंक का नेतृत्व करेगा। इससे कोई फर्क नहीं पड़ता कि यह कैसे लिखा गया था (पूर्ण या सापेक्ष यूआरएल)।

जब आप $(this).attr("href") का उपयोग करते हैं तो आप सीधे किसी भी अन्य विशेषता की तरह href विशेषता का मूल्य पुनर्प्राप्त कर रहे हैं, इसलिए यह HTML में प्रस्तुत सटीक मान वापस कर देगा।

अपने मामले तो के लिए, यह $(this).attr("href")

उपयोग करने के लिए आप jQuery का उपयोग नहीं करना चाहते हैं, तो बेहतर है, वहाँ अभी तक एक और समाधान, सादे जावास्क्रिप्ट का उपयोग है:

this.getAttribute('href') 
1

document.getElementById(yourAnchorId).href.split("/")

[document.getElementById(yourAnchorId).href.split("/").length - 1].split("?")[0];

+0

हे ब्रायन, मैं आपकी सामग्री को काम पर नहीं ला सकता, फिर भी, क्या आप कृपया जेएसबीएन या जेएसफिल्ड के लिए एक लिंक प्रदान कर सकते हैं, तो मैं देखता हूं कि आपने यह कैसे किया है? – user000001

+0

@ user744184 - Fiddle: http://jsfiddle.net/Yu7Q2/3/ – Brian

1

क्या एक लेकिन एक छोटे-स्ट्रिंग के साथ पैसे पर सही कर रहे हैं?

उदाहरण के लिए:

function getHref(a) 
{ 
    var i = a.outerHTML.indexOf('href="')+6; 
    return a.outerHTML.substring(i, a.outerHTML.indexOf('"', i)); 

} 

पी.एस परीक्षण!

+0

योनाथन गार्टी, क्या आप कृपया जेएसबीएन या जेएसफिल्ड के लिए एक लिंक प्रदान कर सकते हैं, तो मैं देखता हूं कि आपने यह कैसे किया है? क्योंकि मुझे लगता है कि आपकी सामग्री काम पर नहीं आती है। अभी तक कम से कम नहीं। – user000001

+0

http://jsbin.com/ajulaj - "मुझे परीक्षण करें" पर क्लिक करें – ygaradon

+1

लेकिन मुझे @Doug समाधान पसंद है !!! – ygaradon

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