【问题标题】:Using jQuery's unwrap() to remove a class使用 jQuery 的 unwrap() 删除一个类
【发布时间】:2016-06-23 03:54:55
【问题描述】:

我想从表格的特定单元格中具有该类的所有标签中删除 emphasis 类。我正在选择这样的表格单元格内容:

var answer = $('tr.problem_display_work:last td:first').html();

在代码的另一个地方,我正在使用unwrap(),如下所示:

$(".emphasis").contents().unwrap();

但是,我不确定如何将两者结合起来。我试过了,但失败了:

var answer = $('tr.problem_display_work:last td:first').html().(".emphasis").contents().unwrap();

有什么想法吗?

编辑澄清 #1:我想将 HTML 保留在标签内。所以,如果我有:14 + 6 = <span class="emphasis">20</span> 我想以14 + 6 = 20 结束。

编辑澄清 #2:有问题的 HTML 被设置为隐藏的 <input> 字段的值,例如 $('#answer').val(answer);。 Gleb Kemarsky 的解决方案很好,但由于某种原因它没有应用输入字段的值。

编辑澄清 #3...

我有一个<table>,其中包含一些行和单元格。在最后一行的第一个单元格中,我有一些内容(例如14 + 6 = <span class="emphasis">20</span>)。

我使用var answer = $('tr.problem_display_work:last td:first').html(); 获取该单元格的HTML,然后使用$('#answer').val(answer); 更新隐藏<input id="answer"> 的值。

发生这种情况时,我想将 14 + 6 = <span class="emphasis">20</span> 转换为 14 + 6 = 20 以获取隐藏的 <input id="answer"> 的值,但在表格中将其保留为 14 + 6 = <span class="emphasis">20</span>

编辑澄清 #4...

关键是删除任何具有emphasis 类的<span>s。

这.. <span class="emphasis"><div class="fraction_display"><span class="numer_display">21</span><span class="bar_display">/</span><span style="border-top-color: green;" class="denom_display">23</span></div></span>

最终应该是... <div class="fraction_display"><span class="numer_display">21</span><span class="bar_display">/</span><span style="border-top-color: green;" class="denom_display">23</span></div>

【问题讨论】:

  • OP 也可以包含 HTML 标记
  • 使用.find() 而不是.html()
  • 这个怎么样。 $('tr.problem_display_work:last td:first').find(".emphasis").removeClass("emphasis");
  • 如果你想删除一个类,你为什么要删除一个元素而不只是删除类?

标签: jquery unwrap


【解决方案1】:

如何从答案中删除<span>标签

5) 创建 HTML 元素的副本并应用 .unwrap() 方法

同样的问题是solved by Redu


4) 从答案中删除<span class="emphasis"></span>(没有嵌套标签)

var answer = $( 'tr.problem_display_work:last td:first' ).html();
$( '#answer' ).val( answer.replace( /<span class="emphasis">(.*?)<\/span>/g, '$1' ) );
.accent,
.emphasis {
  font-family: sans-serif;
  font-weight: bold;
  padding: 0 2px;
}
.accent   { background: yellow;  }
.emphasis { background: orange; }
table {
  margin-bottom: 12px;
}
td {
  border: solid 1px #999;
  padding: 2px 8px;
}
<table>
  <tr class="problem_display_work">
    <td><span class="accent">1</span> + <span class="accent">1</span> = <span class="emphasis">2</span></td>
    <td><span class="accent">2</span> + <span class="accent">2</span> = <span class="emphasis">4</span></td>
  </tr>
  <tr class="problem_display_work">
    <td><span class="accent">3</span> + <span class="accent">3</span> = <span class="emphasis">6</span></td>
    <td><span class="accent">4</span> + <span class="accent">4</span> = <span class="emphasis">8</span></td>
  </tr>
</table>

<input id="answer" size="70">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

3) 从the .replace() method 的答案中删除所有 html-tags

var answer = $( 'tr.problem_display_work:last td:first' ).html();
$( '#answer' ).val( answer.replace( /<[^>]+>/g, '' ) );
.emphasis {
  background: orange;
  font-family: sans-serif;
  font-weight: bold;
  padding: 0 2px;
}
table {
  margin-bottom: 12px;
}
td {
  border: solid 1px #999;
  padding: 2px 8px;
}
<table>
  <tr class="problem_display_work">
    <td>1 + 1 = <span class="emphasis">2</span></td>
    <td>2 + 2 = <span class="emphasis">4</span></td>
  </tr>
  <tr class="problem_display_work">
    <td>3 + 3 = <span class="emphasis">6</span></td>
    <td>4 + 4 = <span class="emphasis">8</span></td>
  </tr>
</table>

<input id="answer">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2) 将.emphasis 类添加到您的选择器

$( 'tr.problem_display_work:last td:first .emphasis' ).contents().unwrap();
.emphasis {
  background: orange;
  font-family: sans-serif;
  font-weight: bold;
  padding: 0 2px;
}
td {
  border: solid 1px #999;
  padding: 2px 8px;
}
<table>
  <tr class="problem_display_work">
    <td>1 + 1 = <span class="emphasis">2</span></td>
    <td>2 + 2 = <span class="emphasis">4</span></td>
  </tr>
  <tr class="problem_display_work">
    <td>3 + 3 = <span class="emphasis">6</span></td>
    <td>4 + 4 = <span class="emphasis">8</span></td>
  </tr>
</table>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

1) 使用the .find() method

selectorAnswer = $( 'tr.problem_display_work:last td:first' );
selectorAnswer.find( '.emphasis' ).contents().unwrap();

【讨论】:

【解决方案2】:

您的问题不清楚。我知道您想从表格的所有单元格中删除“强调”类。解决办法是..

$('tr.problem_display_work:last td:first').removeClass("emphasis");

【讨论】:

  • 我刚刚澄清了我的问题以及我想得到什么。
猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多