代码之家  ›  专栏  ›  技术社区  ›  EHerman

jQuery克隆元素只在循环中附加克隆项一次

  •  0
  • EHerman  · 技术社区  · 6 年前

    .wrap .clone() 或者其他我忽略的东西,只会附加一次项目?

    我期望发生的事情:
    .duplicate 值被更新(假设为3),则 .target 元素被克隆,然后 元素被清空,循环运行并附加存储在中的3个克隆 $clone . 决赛 元素应该包含3 <h2>Target</h2> 元素。

    正在发生的事情:
    上述情况似乎发生了,但最终只有1 < 元素被附加到 元素。

    代码:

    $( 'body' ).change( '.duplicate', function() {
    	
      var count  = $( '.duplicate' ).val(),
          $clone = $( '.target' ).clone(),
          i      = 1;
    
      $( '.wrap' ).html( '' );
    
      while ( i <= count ) {
    
        $( '.wrap' ).append( $clone );
    
        i++;
    
      }
    
    } );
    .duplicate {
      width: 200px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    
    <input type="number" class="duplicate" value="1" min="1" max="5">
    
    <div class="wrap">
      <div class="target">
        <h2>Target</h2>
      </div>
    </div>
    1 回复  |  直到 6 年前
        1
  •  3
  •   charlietfl    6 年前

    每次迭代都需要一个新的克隆,否则每次只需移动原始克隆即可

    而且,一旦您拥有该类中的多个,您只想克隆其中一个

     $clone = $( '.target' ).first().clone()
    
     while ( i <= count ) {
         $( '.wrap' ).append( $clone.clone() );