3

現在、www.example.com/staging にあるステージング環境のサイトで作業しています。サイトのすべてのリンクは相対的に設定されています (例: /about/)。ページ上のすべてのリンクに「/staging」を追加する簡単な jQuery を作成しようとしているので、その週のすべてのリンクを変更する必要はありません。つまり、ステージング環境にあります。HTML タグがオプションであることは知っていますが、リンクが ExpressionEngine で動的に追加されているため、機能していないようです。jQuery はかなり単純なはずだと思います。これが私が持っているものですが、何かが正しくありません:

$(function() {
  var href = $('a').attr('href');
  $(href).prepend('/staging');
});

助けてくれてありがとう。

4

4 に答える 4

8

これを試して:

$(function() {
  $('a').each(function() {
    var href = $(this).attr('href');
    $(this).attr('href', '/staging' + href);
  });
});
于 2010-10-25T18:05:15.890 に答える
2
$(function() {
  $('a').each(function() {
    $(this).attr('href', '/staging' + $(this).attr('href'));
  });
});

$(href)属性の値であるため、何も見つかりません。

于 2010-10-25T18:00:28.383 に答える
1

投稿したURLの例(/about/および/staging)は相対的なものではありません。彼らは根付いています。これらのパスは、ここで実行しようとしているように見えることを実行しません。

相対URLがスラッシュで始まることはありません。それらはパス部分(名前またはドット)で始まります。ファイルシステムのパス名の先頭にスラッシュを付けるのと同じように、先頭にスラッシュを付けると、ブラウザはホストのルートからリンクを探すようになります。

于 2010-10-25T18:02:51.503 に答える
0

jQuery に代わる方法は、<base>タグを使用することです。

タグ<base href="http://www.example.com/staging/" /> に追加すると、すべての(etc) リンクが思いどおりに機能します。<head>/about/

実際、これはあなたにはうまくいかないと思います。実際の相対リンクabout/であるような URL があれば機能します。相対リンクではありません。誰かが後でGoogle検索でこれを見つけ、相対リンクの解決策が必要な場合に備えて、この回答をここに残しておきます。/about/

URL があまり一般的でない形式である場合./about/、このソリューションは機能します。ブラウザーは、URL./about/をタグhttp://www.example.com/about/のない<base>ものとして、または上記の方法でタグhttp://www.example.com/staging/about/を設定したかのように処理 (および表示) します<base>

于 2010-10-25T18:32:27.457 に答える