【问题标题】:Stripping HTML from jQuery load() result从 jQuery load() 结果中剥离 HTML
【发布时间】:2012-05-25 00:53:54
【问题描述】:

这是this question.解决方案的后续

我正在使用 jQuery 的 load() 函数将 div 标记中的标题从我的站点中的一个页面拉到另一个页面。这非常有效。

问题是,load() 拉出 div 标签本身,这是我不想要的,因为它会像源页面一样通过 CSS 进行格式化。

这里是 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_divlinked_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 标记,因为服务器在加载时没有锚标记中的文本;所以我假设我需要在 load() 调用之后在 jQuery 中删除 HTML ......这就是我不知道该怎么做的事情。 :)

想要的结果是:

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

得到的结果是:

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

希望这是有道理的。我想我提供了比我需要的更多的细节。谢谢!

【问题讨论】:

  • 最终load 获取整个页面并剥离以方便您使用。你为什么不从最终结果中做find('div').remove()
  • @Jashwant 你的意思是像a.load(a.attr('linked_path') + ' #' + a.attr('linked_div')).find('div').remove();?如果是这样,则无法剥离 &lt;div&gt; 标记,并导致与我的原始代码相同的有问题的解决方案。

标签: php jquery html


【解决方案1】:

在您的 .load 选择器中再向下导航一级

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());
});

【讨论】:

  • 对不起,@Kevin-B,news_header 是一个 id,而不是一个类。我将编辑我的原始帖子。
  • 正确,但在源页面 (linked_path) 上,ID 唯一的。在目标页面上它们不会出现,但我不希望填充该 div/ID(回到手头的原始问题)。
  • 查看我上次的编辑,它应该可以工作。至少尝试第一个。如果 news_header 在您使用 .load 请求的页面上是唯一的,那么您应该使用它。
  • 啊,是的,这是有道理的。 load 加载所选元素及其子元素,而不仅仅是子元素。我建议在这种情况下远离 .load 并使用 $.get 。我会更新答案。
  • 修改选择器,直到完成。我没有你的 html 可以使用。尝试使用.filter 而不是.find 等。
猜你喜欢
  • 2012-01-22
  • 1970-01-01
  • 2012-11-21
  • 2012-09-30
  • 1970-01-01
  • 2022-12-27
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多