【问题标题】:How to Remove <a href> Link Tag for a Specific Value using Jquery如何使用 Jquery 删除特定值的 <a href> 链接标记
【发布时间】:2012-11-09 14:30:21
【问题描述】:

我在具有以下&lt;td&gt; 元素的报告中遇到以下情况。请注意,这可能会出现多次,因为它是一份报告。

我的问题是,当值为'N'时,使用jQuery,我想删除整个&lt;a href&gt; tag,只显示'N'的值,下面没有下划线,否则如果值为'Y' 然后保持原样。

例如:

<td align="center" headers="MPA_CHANGED"><a href="http://www.mysite.com" class="my-mpa">Y</a></td>

<td align="center" headers="MPA_CHANGED">N</td>

【问题讨论】:

  • 值N从何而来?
  • 来自数据库查询。只需要检查如果'N'那么不需要href标签。谢谢。

标签: jquery dom-manipulation


【解决方案1】:
$('a').filter(function(){
    return this.innerHTML === 'N';
}).replaceWith('N');

Live DEMO

【讨论】:

  • 我只想要报告的每一行,如果值为 'N' 则不需要 标记链接。我假设我需要一个 .each 函数?
  • 他有一个小错字。他修好了。
  • @tonsils。每个 jQuery 核心函数都适用于集合中的每个元素,您不必在这里使用each
  • @gdoron - 尝试了您的流程并且工作正常,但不幸的是,当报告通过 ajax 执行部分刷新时,它会自行重置。有没有办法让它永远着火?谢谢。
  • @tonsils。每次需要时调用它。就像在每个 ajax 请求的回调中一样。
【解决方案2】:

添加您选择的类名,以便您可以更好地控制存在的所有 td 元素中的 td 元素:例如:“report_td”

所以 html 看起来像这样:

<td align="center" class="report_td" headers="MPA_CHANGED">...</td>

然后像这样尝试:

$(function(){
  $("td.report_td").each(function(i, e){
    var tdElement = $(e);
    var value = tdElement.find("a").text();
    if(value == "N") {
      tdElement.html("N");
    }
  });
});

【讨论】:

    【解决方案3】:
    $('a').each(function() {
    if ( $(this).text() == 'N') {
        $(this).replaceWith('N');
    }
    });
    

    【讨论】:

    • 为什么要用不同的方法添加完全相同的解决方案?
    • @gdoron 你为什么在乎?在我看来,它的美妙之处在于有不同的方法来完成工作。也许看到这个的 OP 或其他人不熟悉 .each() 处理程序,并且可能会从我的回答中学习......减轻那里的牛仔。
    • 作为普通用户,我很在意,当我为遇到的问题寻求解决方案时,我不喜欢看到很多重复的答案。当然你不必同意,只是说出我的想法。美好的一天,警长。
    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 2012-12-11
    • 2022-07-21
    相关资源
    最近更新 更多