0

だから私は次のようなものを持っています

<ul>
<li> <a href="123.html">123</a></li>
<li> <a href="abc.html">abc</a></li>
</ul>

このサイトは私の INDEX.HTML ファイルにあります。より多くのリストとリスト項目があることを除いて。リンクされている各 HTML ページには、次のようなセクションがあります。

<ul>
<li><strong>Time: </strong>12:00</li>
</ul>

私が欲しいのは、ユーザーがINDEX.HTMLページを見ると、時間が最後に追加されるので(相対リンクから)、次のようになります

  • 123 - 12:00
  • ABC - 13:00

誰か助けてくれませんか?contents() と fine() が必要かもしれないことはわかっていますが、どこにも手がかりがありません。したがって、基本的に各リンクについて、問題の URL に移動し、時間を取得して INDEX.HTML の元の行に追加します。

ありがとう。

4

2 に答える 2

2

私があなたの問題を理解していれば、メイン メニューに情報を表示するために各内部ページのコンテンツを読み込んでいると思います。これが事実である場合、それはパフォーマンスにとって悪い考えです。

それでも必要な場合は、最初に$.get関数を使用して HTML コンテンツを読み込む必要があります。次に、結果を操作して、目的の要素を検索します。

アップデート

ここでサンプルを更新しました。リンクは 1 つしかありませんが、コード構造で表示されます。

それに基づいて、あなたのindex.htmlコードは次のようになると思います:

$("li a").each(function() {
    var src = $(this).attr("href");
    $.get(src, function(data) {
      var element = $("<div>").html(data);
      var time = element.find("li").contents().last().text();
      $("li").append(" - " + time);
    });
});
于 2012-08-21T20:40:46.197 に答える
2

アイデアは次のようになります。

  1. sをループしliます。
  2. href子の属性を取得しますa
  3. そのページに ajax リクエストを送信します。
  4. 応答を解析し、jQuery を使用して適切なテキストを見つけます。
  5. そのテキストを に追加しますli

jsFiddle では、個別のページを生成するのは簡単ではないため、ケースに合わせて少し変更する必要があります。また、セレクターをより厳密にしたい場合があります(ul strongあなたの例で補うことができるのは最高です)。

http://jsfiddle.net/3JQDz/

$("li").each(function() {
    var $li = $(this);
    var href = $li.find("a").attr("href");  // use this in your real case

    $.ajax({
        type: "POST",
        url: "/echo/html/",  // this is just the way to use ajax on jsFiddle
        data: {
            html: "<ul><li><strong>Time: </strong>12:00</li></ul>"
        },
        success: function(html) {
            // full document -> only the li -> its child nodes -> the last one (the text node) -> its text
            var time = $(html).find("li").contents().last().text();
            $li.append(" - " + time);
        }
    });
});
于 2012-08-21T20:44:30.730 に答える