2

jQuery.get() を介してページにロードされた HTML のリンクを更新することを目的とする関数があります。バックエンド アプリケーションには、フル パスを含めるように簡単に更新できない数千のリンクがあります。そのため、単一ページ アプリケーションに変換する場合、フル パスを含める必要がある場合、多くのリンクは / に関連しています。

ここで、相対パスから絶対パスへの変換と絶対パスの検索に関するいくつかの質問を読みましたが、それらは私がやろうとしていることに完全には適合しておらず、Javascript と jQuery についての私の理解はまだ不十分であり、理解できません。この行き詰まりを超えて答えを探す方法を知りません。

これが私の機能です:

// handle modifying links, and attaching events
// href - The URL of the age that was loaded that triggered the handler callback
// target = left or right (must be ID, as # will be appended
var handler = function (data, href, target) {
  // Insert data into div
  $( '#' + target ).html(data);

  // Convert relative URLs in #right to include directory
  var base_path = URI(href).directory();

  $('#right a:uri(is: relative)').attr('href', base_path+'/'+$(this).href);
};

これは base_path を正常に見つけて追加します(関数に渡される href 変数から取得します)が、元のファイル名とクエリ文字列をそこに取得する方法がわかりません。私は未定義になります...だから、明らかに「$(this)」または.hrefを理解していません。このデータを取得するために他の多くのオプションを試しましたが、エラーまたは未定義の値が発生し、何をしているのかわかりません。「これ」でググるのは難しい。

$(this).attr('href') も使用してみましたが、結果は同じです...未定義です。

要するに、URI属性を更新するとき、属性更新内で最初に選択されたhrefを見つけて、それを新しいURIに入れるにはどうすればよいですか?

jQuery とこの jQuery URI ライブラリを使用していることに注意してください: http://medialize.github.io/URI.js/jquery-uri-plugin.html

4

1 に答える 1

1

OK、私はこれをもっとグーグルで調べました。私が必要としていた機能は次のとおりです。

var handler = function (data, href, target) {
  // Insert data into div
  $( '#' + target ).html(data);

  console.log("href = ", href);
  // Convert relative URLs in #right to include directory
  var base_path = URI(href).directory();
  //var base_path = uri.directory() + '/';
  console.log(base_path);
  $('#right a:uri(is: relative)').each(function() {
    var cur_href = $(this).attr("href");
    $(this).attr("href", base_path+"/"+cur_href);
  });
};

変更は、.each を使用して、無名関数が各相対リンクで作業できるようにすることです。

于 2013-08-29T17:57:05.550 に答える