根据最新的数组创建一个具有唯一ID的新DOM

时间:2018-02-17 21:39:13

标签: javascript jquery

我想创建一个新的div元素,其中包含来自最新数组的唯一ID,我每次点击一个创建按钮,但看起来我的代码不起作用,这里是我的代码:



$(document).ready(function(){
  var arr = [];
  counter = 0;
   
  
  $('#newDiv').on('click', function(){
    $('.container').append('<div class="image">hallo</div');
    counter ++;
    arr.push(counter);
    $('.image').attr('id',arr[arr.length-1]);  
  })
})
&#13;
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
  <div class="container"></div>
  <button id="newDiv">create new div</button>
</body>
</html>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

在每次点击时,您将每个id元素的image设置为数组中的最后一个元素,而不是像这样做。

&#13;
&#13;
let arr = [], counter = 0;

$('#newDiv').on('click', function() {
  arr.push(counter++)
  const img = $('<div />', {
    'class': 'image',
    'id': arr.slice(-1)
  }).text('hallo');
  $('.container').append(img)
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>
<button id="newDiv">create new div</button>
&#13;
&#13;
&#13;

或者您可以先将计数器推送到数组,然后将最后一个元素用于带有切片的数组,并将其用作id。

&#13;
&#13;
let arr = [], counter = 0;

$('#newDiv').on('click', function() {
  arr.push(counter++)
  const img = $(`<div class="image" id=${arr.slice(-1)}>hallo</div>`)
  $('.container').append(img)
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container"></div>
<button id="newDiv">create new div</button>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

首先,当你使用classe查询选择器时,它会将id添加到该类的每个元素,所以这里有一个可以使用的解决方法:

在附加部分添加添加

$(document).ready(function(){
  var arr = [];
  counter = 0;
   
  
  $('#newDiv').on('click', function(){
    counter ++;
    arr.push(counter);
    $('.container').append('<div id='+(arr.length-1)+' class="image">hallo '+(arr.length-1)+'</div');
  })
})
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
  <div class="container"></div>
  <button id="newDiv">create new div</button>
</body>
</html>

答案 2 :(得分:1)

您的原始代码正在选择1[MyProperty] AsOf[MyProperty](Microsoft.EntityFrameworkCore.DbSet类的所有result = { 'case1': foo1, 'case2': foo2, 'case3': foo3, 'default': default, }.get(option)() ,并使用最新的数字更新它们。

我建议创建div仅将数字添加到新image,然后将其附加到容器。

请查看以下更新的代码:

&#13;
&#13;
div
&#13;
div
&#13;
&#13;
&#13;