jQuery

2013-05-07 23 views
15

ile tıkladıktan sonra bir bağlantı href'i değiştirme Tıklandığında, href niteliğini değiştirip ardından bu konuma giden bir bağlantı oluşturmaya çalışıyorum.jQuery

Benim html: tıklandığında

<a href="http://google.com" rel="group" data-wpurl="http://yahoo.com"></a> 

, ben tarayıcı veri wpurl konumu değil, href konum gitmek istiyorum. Veri özniteliğini kullanmamın nedeni, kullanıyorum uygulama nedeniyle href kullanımını gerektirir ... burada ilgili değil.

Benim jQuery: Ben e.preventDefault() kullanıyorum

$('a[rel="group"]').on('click', function(e) { 
     e.preventDefault(); 
     var wpurl = $(this).attr("data-wpurl"); 
     $(this).attr('href', wpurl); 
}); 

; tarayıcının kullanıcıyı href'e almasını engellemek için. Veri özniteliği href'e atandıktan sonra bir tıklamayı nasıl tetiklerim? trigger('click') ve click();'u kullanmayın!

Herhangi bir fikrin var mı?

+0

Sadece yapılabilir, ancak kullanım durumu hakkında meraklı olursunuz ... – Ejaz

+0

Her şey için href'e ihtiyacım var ama ... Yani benim js içinde şartlı kullanıyorum. Bağlantının ekran boyutuna bağlı olarak farklı URL'leri tetiklemesini istiyorum. Bu, – JCHASE11

cevap

16

Sadece derhal konumunu değiştirmek için daha kolay olurdu:

e.preventDefault(); 
location.href = $(this).data('wpurl'); 
+1

. Eğer kullanıcıyı yeni bir sayfaya götürecekseniz, bağlantının hrefini gerçekten güncellemek için bir neden yoktur. – sgroves

6

onmousedown kullanın. Google, bu yöntemi arama sonuçları sayfasında kullanır. Böylece, tıkladıklarınızı takip edebilirler. Bağlantının nereye gideceğini görmek istiyorsanız, sol yerine sağ tıklayın. Her ikisi de onmousedown olayını tetikler.

<a href="http://google.com" data-wpurl="http://yahoo.com" onmousedown="rwt(this)">CLICK HERE</a> 

<script type="text/javascript"> 
    rwt = function(e){ 
    e.href = $(e).data('wpurl'); 
    } 
</script> 
2

http://jsfiddle.net/afLE3/

Ben orijinal jQuery e.preventDefault() dışında iyi olduğunu düşünüyorum: Bu olursa olsun bu noktadan sonra href özelliğinin ne yaptığını, olay ateş duracaktır.

$('a[rel="group"]').on('click', function(e) { 
     var wpurl = $(this).attr("data-wpurl"); 
     $(this).attr('href', wpurl); 
}); 

Yukarıdaki kod, sayfa yenilenmeden önce yürütülür. Ancak gerek kalmadan benim bakış gelen e.preventDefault()

$('a[rel="group"]').on('click', function(e) { 
    e.originalEvent.currentTarget.href = $(this).data('wpurl'); 
}); 

çağıran

15

Benzer bir çözüm, bu daha genel, daha temiz bir çözüm bu (varsayılan tarayıcı davranışını değiştirmez gibi örn: zaman kullanıcı, bağlantı üzerindeki fare tekerleği ile tıklar, Jacks çözümü ile yeni bir sekme açılmayacaktır)

+0

Bunun için teşekkürler. Bu en okunaklı ve en basit açıklanmış cevaptı. –