用新内容替换选择

时间:2015-07-08 22:27:22

标签: jquery

假设我有一个列表(但我有表格单元格):

<ul>
    <li>first</li>
    <li class="middle">2</li>
    <li class="middle">3</li>
    <li class="middle">3</li>
    <li>last</li>
</ul>

我想用一个.middle替换所有<li>middle</li>元素。使用jQuery的replaceWith将替换所有单个元素(如this fiddle中所示):

<ul>
    <li>first</li>
    <li>new content</li>
    <li>new content</li>
    <li>new content</li>
    <li>last</li>
</ul>

但我想要这个:

<ul>
    <li>first</li>
    <li>new content</li>
    <li>last</li>
</ul>

是否有本机jQuery方法来执行此操作,或者我必须在我的情况下创建新列表(或新表行),而不是删除旧的并添加新的?

请注意:所有元素都是顺序的,在DOM树中它们一个接一个地出现(它们是一个组)。

4 个答案:

答案 0 :(得分:2)

将所有内容全部包裹在<li>middle</li>中,然后将其删除:

&#13;
&#13;
$('li.middle').wrapAll('<li>middle</li>').remove();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>first</li>
  <li class="middle">2</li>
  <li class="middle">3</li>
  <li class="middle">3</li>
  <li>last</li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用removeClass():not():first

$('.middle:not(:first)').remove();
$('.middle').removeClass('middle').text('New content');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<ul>
  <li>first</li>
  <li class="middle">2</li>
  <li class="middle">3</li>
  <li class="middle">3</li>
  <li>last</li>
</ul>

答案 2 :(得分:0)

尝试

long yourmilliseconds = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy HH:mm"); //Play with the parameters to get different results
Date resultdate = new Date(yourmilliseconds);
String formattedActualDate = sdf.format(resultdate);

答案 3 :(得分:0)

replaceWith接受函数参数 - 因此你可以替换找到的元素的第一个出现,并丢弃其余元素:

$(".middle").replaceWith(function(index){ return index == 0 ? "<li>new content</li>" : " "});