2013-05-07 23 views
15

クリックしてhref属性を切り替えてからその場所に移動するリンクを作成しようとしています。jQueryをクリックした後にリンクhrefを変更する

私のHTMLは次のとおりです。

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

クリックすると、私はデータ-wpurl場所ではなく、hrefの場所に移動するには、ブラウザをしたいと思います。私がデータ属性を使用しているのは、使用しているアプリケーションがhrefの使用を必要としているからです...ここでは関係ありません。

私のjQueryのです:

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

私はe.preventDefault()を使用しています。ブラウザがユーザをhrefに連れていかないようにします。データ属性がhrefに割り当てられたら、どのようにクリックをトリガーしますか? trigger('click')click();を使用しても動作しません!

アイデア?

+0

これはできますが、ユースケースについてはちょっと不思議です... – Ejaz

+0

私はモバイル以外はすべてhrefが必要です。だから私のjsでは、私は条件付きを使用しています。私はリンクが画面サイズに基づいて異なるURLをトリガーするようにしたい。 – JCHASE11

答えて

16

それだけですぐに場所を変更することが容易になります

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

これです。ユーザーを新しいページに連れて行く場合は、リンクのhrefを実際に更新する必要はありません。 – sgroves

6

はれるonmousedown使用してください。 Googleは検索結果ページでこの方法を使用して、クリックした内容をトラッキングできます。リンク先を確認したい場合は、左の代わりに右クリックしてください。彼らはどちらもonmousedownイベントを引き起こします。

<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/

は、私はあなたのオリジナルのjQueryのe.preventDefault()を除いて、罰金だと思う:これは関係なく、その時点の後、href属性に何をすべきか、イベントの発射を停止することはありません。

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

ページがリフレッシュされる前に、すべてのコードが実行されます。

15

同様のソリューションが、これは例えば(デフォルトのブラウザの動作を変更しないので、私の視点からe.preventDefault()

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

を呼び出す必要がなく、これは、より一般的な、クリーンなソリューションです:ときユーザーはリンク上でマウスホイールをクリックし、Jacksソリューションでは新しいタブは開かれません)

+0

ありがとうございます。これは最も読みやすく、最も単純な解答でした。 –

関連する問題