1

これは、この質問の解決策のフォローアップです。

jQuery のload()関数を使用して、div タグ内の見出しをサイト内のあるページから別のページに移動しています。これは素晴らしく機能します。

問題は、ソースページのようにCSSを介してフォーマットされるため、divタグ自体load() もプルすることです。これは望ましくありません。

PHPは次のとおりです。

function get_team_articles($team_id, $feat=0) {
    .
    .
    .
    while ($row = mysql_fetch_assoc($r)) {
        $page = explode('_', $row['page_id']);
        (is_numeric($page[1]))
            ? $pre = 'wk_'
            : $pre = '';
        $arr[] =    $page[0] . " | " . $pre . $page[1] . ": " . "
                    <a linked_div='news_header'
                    linked_path='../news/" . $page[0] . "/" . $pre . $page[1] . "/" . $page[1] . "_" . $page[2] . ".html'
                    href='index.php?view=news&yr=" . $page[0] . "&wk=" . $page[1] . "&pg=" . $page[2] . "'></a>";
    }

    $articles = implode('<br/>', $arr);
    return $articles;
}

jQuery で使用されているアンカー タグ内の属性linked_divと属性に注目してください。linked_path

function set_team_headlines(){
    $('#section-articles > a').each(function() {
        var a = $(this);
        a.load(a.attr('linked_path') + ' #' + a.attr('linked_div'));
    });
}

明らかに、PHP のアンカー タグ内の HTML タグを削除することはできません。これは、サーバーが読み込み時にアンカー タグ内にテキストを保持していないためです。そのため、呼び出し後にjQueryでHTMLを削除する必要があると思いload()ます...そしてそれは私が行う方法を理解できないことです。:)

私が望む結果は次のとおりです。

<a href="...">My headline</a>

私が得ている結果は次のとおりです。

<a href="..."><div id="news_header">My headline</div></a>

うまくいけば、これは理にかなっています。必要以上の詳細を提供したと思います。ありがとう!

4

1 に答える 1

2

.loadセレクターでもう 1 レベル下に移動します

a.load(a.attr('linked_path') + ' #news_header');

news_header ID が一意でない場合、その ID で選択することはできません (ID は一意でなければなりません!)

この問題を回避するには、次を使用します。

a.load(a.attr('linked_path') + ' #' + a.attr('linked_div') + ' div');

編集:
.loadターゲット要素の子を追加する代わりに、htmlを追加するときに実際にターゲット要素を含めます。の使用に移り$.get()ます。

$.get(a.attr('linked_path')).done(function(html) {
    a.text($(html).filter("#news_header").text());
});
于 2012-05-23T19:02:59.050 に答える