使用jQuery

时间:2019-02-12 09:09:41

标签: jquery

使用这样的HTML:

<div class="content">
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
    <p>Paragraph 3</p>
</div> 

使用这样的jQuery,它将在第一段之后附加Click Here HTML:

var $this = $(this);

$this.append('<div id="link" class="link">Click Here/div>');

但是,我需要使用this answer中的p:nth-child(2)在第二段之后附加HTML

尝试了以下操作,但不起作用:

$this('.content p:nth-child(2)').append('<div id="link" class="link">Click Here</div>');

编辑:

 $('.content').each(function() {

    var $this = $(this);

    $this.append('<div id="link" class="link">Click Here</div>');

    $this.children('p:not(:first-child)').wrapAll('<div class="text" />');

} 

并将所有其余段落包装在div文本中(不包括前2个段落)

3 个答案:

答案 0 :(得分:1)

您的选择器不正确。您需要按如下方式使用after()

$(function() {

  $('.content').each(function() {
    var $this = $(this);
  
    $this.children('p:nth-child(2)').append('<div id="link" class="link">Click Here</div>');

    $this.children('p:not(:first-child)').wrapAll('<div class="text" />');

  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="content">
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
    <p>Paragraph 3</p>
</div>

答案 1 :(得分:0)

我假设您正在遍历.content元素,因为它们有多个实例。这是没有必要的,因为如果选择器包含元素集合,则jQuery会自动为您执行此操作。然后,您只需调用append(),即可将内容添加到所需位置。试试这个:

$('.content p:nth-child(2)').append('<div id="link" class="link">Click Here</div>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="content">
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
    <p>Paragraph 3</p>
</div> 
<div class="content">
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
    <p>Paragraph 3</p>
</div>

答案 2 :(得分:0)

我写了一部分代码进行演示。查看以下代码:

$.each($('.content p'), function (index, paragraph) {
    if (index == 1) { //second element
      $(paragraph).append('<div>some text</div>');
    }
});

工作中的jsFiddle: CLICK!