2011-12-29 18 views
1

リンクテキストを取得してURLに追加し、元のリンクのOnclickが追加されたクエリ文字列を使用して新しいURLを開きたいとします。javascriptを使用してリンクテキストを取得するにはどうすればよいですかまたはjquery?クリックされ、これが動作する必要があるときに、リンクのhref + textにページを送信するにはデフォルトのhref以外に行くリンクを作成する

<a href="www.mysite.com/search.aspx?kwd=" onClick="location.href='http://mysite.com/search.aspx?kwd='+ Grab text 'kangaroo' and append here as QueryString>Kangaroo</a> 

答えて

0

$("a").click(function(){ 
    location.href = $(this).attr("href") + $(this).text(); 
    return false; 
}); 

しかし、なぜちょうどページのロード時に正しくのhrefを設定し、これらすべてのonclickのハンドラを取り除くありません一緒に?

$("a").each(function(i, el) { 
    var $el = $(el); 
    $el.attr("href", $el.attr("href") + encodeURI($el.text())); 
}); 
+0

は、私はあなたが彼の質問を誤解しているかもしれないと思います。私は彼が最終的なonclickリンクを次のようにしたいと思います: 'location.href = 'http://mysite.com/search.aspx?kwd = kangaroo'' –

+0

カンガルーの価値をどうやってつかみますか?それが私の問題でした。私はそれが動的なのでURLに追加することはできません –

+0

プレーンJSのinnerHTML。 $ .text()in jquery – Gasim

0

jQueryの例:

$('a.link').click(function() { 
    var $this = $(this), 
     href = $this.attr('href'); 

    window.location = href + encodeURIComponent($this.text()); 
    event.preventDefault(); 
    return false; 
}); 

Demo

+0

oops。私たちは同時にそれを書きました。私はいつも他のものの前にe.preventDefault()を置いています。あなたは他のすべての後にそれを置く。違いはなんですか? – Gasim

+0

関数本体で呼び出されている限りはそれほどです。 – Joe

+0

@Gasim jQueryイベントハンドラ内では、 'return false;'は 'event.preventDefault();と同じです。 event.stopPropagation(); 'イベントハンドラ内で 'event.preventDefault()'が呼び出されたときとの違いはありません。 – Jasper

2

あなたはthisを通じて現在のアンカーにアクセスすることができます。そのテキストは、this.innerHTMLまで入力できます。

このような何か...

<a href="www.mysite.com/search.aspx?kwd=" onClick="location.href='http://mysite.com/search.aspx?kwd='+ this.innerHTML; return false;">Kangaroo</a> 
+0

完璧に動作しますが、2つ以上の単語のようなリンクテキストが問題に遭遇しました。 http://mysite.com/search.aspx?kwd=Heart%20Health ...のようにどのように%20を広告しますか?スペースもなく、トリムする必要がありますか? –

+0

Jasperが述べたように 'エスケープ'または 'encodeURIComponent'です。 –

+0

@Gasim 'encodeURIComponent'は、必要な置換えを行うために既に設定されています。また、MDNドキュメントを使用してみてください。w3schoolsは下位です:https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/replace – Jasper

0
$('a.your-url').click(function(e) { 
    e.preventDefault(); 
    url = $(this).attr('href') + $(this).text(); 
    location.href = url; 

}); 
2
$('.your-url').click(function(event) { 
    event.preventDefault(); 
    window.location= $(this).attr('href') + encodeURIComponent($(this).text()); 
}); 

私は他の回答のどれもが、クエリ文字列パラメータであることを、リンクのテキストをコードしなかったことに気づきました。

インライン(あなたの例のような)は次のようになります。変更後locationオブジェクトのスクリプトが実行を停止し、ページの変更ので

<a href="www.mysite.com/search.aspx?kwd=" onClick="location.href = this.href + encodeURIComponent($.trim($(this).text()))">Kangaroo</a> 

return falseは不要でなければなりません。文字列の先頭と末尾から空白を削除

:あなたがに$.trim()を使用することができます

UPDATE

出典:http://api.jquery.com/jquery.trim/

+0

ありがとうございます。あなたは私の仕事の一部分を完了しました。 –

+0

kwd =%26nbsp%3BHeart%20Health ...私はスペースを取り除く必要がありますか?それ、どうやったら出来るの? –

+0

インラインjquery!ああ男... –

関連する問題