Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS或Jquery创建唯一的span ID_Javascript_Jquery_Html - Fatal编程技术网

Javascript JS或Jquery创建唯一的span ID

Javascript JS或Jquery创建唯一的span ID,javascript,jquery,html,Javascript,Jquery,Html,我正在创建一个内部带有跨距的li项目。我在span中构建了一个onclick函数来获取父li的ID,并将其传递到JSON get请求中。我不确定如何创建一个唯一的ID并在JS函数中读取它。因为这是动态构建的,所以我没有构建交换机,但我觉得我缺少了另一个选项。 这里的问题是,我无法捕获Li ID。我尝试过这个,也尝试过基于类,但似乎都失败了 Li对象创建: $("#jdLists").append('<li class="bigger" id = "' + item.ID + '">'

我正在创建一个内部带有跨距的li项目。我在span中构建了一个onclick函数来获取父li的ID,并将其传递到JSON get请求中。我不确定如何创建一个唯一的ID并在JS函数中读取它。因为这是动态构建的,所以我没有构建交换机,但我觉得我缺少了另一个选项。 这里的问题是,我无法捕获Li ID。我尝试过这个,也尝试过基于类,但似乎都失败了

Li对象创建:

$("#jdLists").append('<li class="bigger" id = "' + item.ID + '">'+ 
  item.GROUP_NAME + 
  '<span title="Remove from list" class=" Sp icon icon-color icon-plus" style="float: right; vertical-align: middle;" '+
  'onclick="spAdd()"></span>' + 
  '</li>');
试着这样做:

// Should work for most cases
function uniqId() {
  return Math.round(new Date().getTime() + (Math.random() * 100));
}

// Create elements properly and attach click event
// before appending to DOM so it delegates the event
var $li = $('<li/>', {
  'class': 'bigger',
  id: uniqId()
});

var $span = $('<span/>', {
  'class': 'Sp icon icon-color icon-plus',
  title: 'Remove from list',
  text: 'I\'m a span',
  click: function() { 
    alert( $(this).parent().attr('id') );
  }
});

$('#jsLists').append( $li.append( $span ) );
//应该适用于大多数情况
函数uniqId(){
返回Math.round(new Date().getTime()+(Math.random()*100));
}
//正确创建图元并附着单击事件
//在附加到DOM以使其委托事件之前
变量$li=$(“
  • ”{ “类”:“更大”, id:uniqId() }); 变量$span=$(''{ 'class':'Sp icon icon color icon plus', 标题:“从列表中删除”, 文字:“我是一个跨度”, 单击:函数(){ 警报($(this.parent().attr('id')); } }); $('#jslist').append($li.append($span));
  • 它应该在单击时提醒li的随机id。也可以为这些样式添加另一个类,而不是内联css;更好、更简单、更容易

    演示:(ctrl+enter可刷新并获取新id)

    下划线为此类情况提供了一个功能。它不需要处理日期和随机数,而是保留一个全局计数器,并在每次调用函数时递增:

    var idCounter = 0;
    _.uniqueId = function(prefix) {
      var id = '' + ++idCounter;
      return prefix ? prefix + id : id;
    };
    

    该函数没有任何作用;它获取“id”的值,但它对它没有任何作用。你如何维护这样的代码?!这是正确的,当我在浏览器中观看时,它也不会获取值,我假设这是因为它不知道哪个li正在发送请求。我没有添加任何其他内容,因为this@elclanrs是的,现在很混乱,只是因为我正在让这个概念发挥作用,但是谢谢,我现在就把它清理干净,它失控了,什么时候调用了
    spAdd
    ,什么调用它?在那个函数中,这个假定是什么?太棒了,它工作得很好。关于如何在Jquery中构造li和span对象的文档有哪些。我需要确保我了解这一点,以备将来使用usage@atlMapper:这是它的文档。这是jQuery方法。
    var idCounter = 0;
    _.uniqueId = function(prefix) {
      var id = '' + ++idCounter;
      return prefix ? prefix + id : id;
    };