1

今jqueryを勉強中です。ページの読み込み時に URL のパラメーターを別のパラメーターに置き換えたい。たとえば、ここに私のコードがあります

 <div class="changeparam">
<a href="http://demo.org/post.php?i=123&p=456&s=789">Link</a>
 </div> 

ここで、params i、p、および s の値を、それぞれ abc、def、ghi などの異なる値に変更する必要があります。ページの読み込み時にそれを行うにはどうすればよいですか?

4

2 に答える 2

3

古い値を知る必要がありますか?できない場合は、次の行に沿って何かを行うことができません(これは、すべてのリンクが同じクエリ文字列を持ち、そうでない場合は拡張する必要があるという単純なケースを想定しています):

$(document).ready( function ( ) {
    // Get the full address from the original link
    var old_fulladdr = $('div.changeparam a').attr('href');

    // split it to get the actual file address
    var old_addr_parts = old_fulladdr.split('?');

    // This may need something more complex...
    var new_querystring = 'i=abc&p=def&g=ghi';

    // This changes the href of the link to the new one.
    $('div.changeparam a').attr('href',old_addr_parts[0] + '?' + new_querystring);

});​

更新:クエリ文字列、置換されるアイテムの配列、および置換値の配列を受け取り、新しいクエリ文字列を出力する、より柔軟な関数を作成しました。このjsfiddleを見てください:http://jsfiddle.net/LWzZR/1

また、私はあなたの質問に対するコメントに同意します-それは可能ですが、お勧めできません:)

于 2012-04-26T15:19:01.233 に答える
1

jQuery BBQプラグインを使用してみてください。これにより、クエリ文字列を処理する問題がはるかに少なくなります。

試してみたいと思います

$(document).ready(function(){
    $.param.querystring($(".changeparam").attr("href"), {i:123, p:456, s:789})
});

クエリ文字列を操作するための優れた機能がたくさんあり、ここで車輪を再発明する必要はありません。

于 2012-04-26T15:51:56.240 に答える