2011-08-08 17 views
29

Bu makaleyi okuduktan sonra net.tutsplus.com/tutorials/javascript-ajax/14-helpful-jquery-tricks-notes-and-best-practices/this.href kullanmanın daha verimli olduğu sonucuna vardım.

Ancak, projelerimden birinde kullanmayı denediğimde, this.href'un yalnızca href değil, aynı zamanda bir web sitesinin URL'sini de döndürdüğünü gördüm. Örneğin, <a href="tab-04"></a>, sayılı belge, http://example.com/abc/tab-04 ve $ (bu) değerini döndürecektir. Ttr ('href') yalnızca tab-04'ü döndürecektir.

Burada bir örnek görebilirsiniz http://jsfiddle.net/UC2xA/1/.

$ (this) .attr ('href') tam ihtiyacım olanı ve daha fazlasını vermez.

Benim sorum bu sadece sekmeyi-04 iade edeceğini, nasıl yazabiliriz (veya ne gerekiyorsa yapacakları) böylece this.href mı?

DÜZENLEME

Doug

this.getAttribute('href')

+4

: ardından durum için

, bu jQuery kullanmak istemiyorsanız $(this).attr("href")

kullanmak daha iyidir, sadece düz JavaScript kullanarak bir başka çözüm, var href özniteliği (HTML kaynak koduna kodlanmış olan), sonra da $ (this) .attr ('href') 'komutunu kullanın. Tam URL'yi istiyorsanız, 'this.href' kullanın. –

+0

this.href'u kullanacak olursanız, verimliliğinden dolayı 'daha fazlasını yap' için yeniden yazın; tür, amacı yener. – Joey

+0

-1 için "this.href'i kullanmanın daha verimli olduğu sonucuna vardım." Hayır, gerçekten değil, ama kesinlikle [çok erken] optimize edersiniz (http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize). Verimlilikte değişme iddiası, var ise bile, tespit edilebilir olma ihtimali sıfırdır. – Malvolio

cevap

51

Düz Javascript'teki href özelliği, semantik ekine sahip olacaktır. Bağlantının yönlendireceği hedef URL'yi döndürür. Yazmanın önemi yoktur (mutlak veya göreceli URL'ler).

$(this).attr("href")'u kullandığınızda, doğrudan diğer tüm özellikler gibi href özniteliğinin değerini alırsınız, böylece HTML'de oluşturulmuş tam değeri döndürür. Eğer tam değeri istiyorsanız

this.getAttribute('href') 
1

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

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

+0

Hey Brian, işlerini işe yaratamıyorum, yine de, jsbin ya da jsfiddle'a bir link verebilir misin, nasıl yaptığını görebiliyor musun? – user000001

+0

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

1

ne ama biraz alt dize ile para misin? örneğin

:

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

} 

P.S. TEST!

+0

Yonathan Garti, jsbin'e veya jsfiddle'a bir link verebilir misiniz, nasıl yaptığınızı görebiliyor musunuz? Çünkü işlerini işe yaramayacak gibi görünmüyorum. Henüz en azından değil. – user000001

+0

http://jsbin.com/ajulaj - "test et" e tıklayın – ygaradon

+1

ama @Doug çözümünü seviyorum! – ygaradon