【问题标题】:Jquery UI : How can I update id on drop eventJquery UI:如何在 drop 事件上更新 id
【发布时间】:2017-05-30 06:51:43
【问题描述】:

我正在为我的练习制作简单的拖放。我正在拖动元素并将其放入放置区,有两个 div 拖动我并复制我,它们都在工作,但在重复功能中,我正在增加 ID,即 test-clone-1 它工作正常。我只想知道如何在 drop 时增加 id,因为在 drop 时默认 id 是 test-clone-1 因为它在复制时增加( test-clone-2、test-clone-3)。我希望如果我拖放元素,默认 id 是 test-clone-1 并且当我再次拖放时,id 应该是 test-clone-2 但是拖放和重复的 id 增量应该相互关联

$( "#editorDesignView" ).droppable({
        accept: '.textTemplate',
      drop: function( event, ui ) {
        var html = '<div id="test-clone-1" class="test" style="background: #eee; width: 80%; margin: 10px auto; padding: 10px;"><p contenteditable="true" style="padding: 5px;">Add your text here.</p><div style="padding:10px; width:50%;" class="draggable-area">drag me</div><div style="padding:10px;width:50%;" class="js-duplicate">duplicate me</div></div>';
  $(html).appendTo(this).hide().slideDown();

      }
    });
  $('#editorDesignView').sortable({
  handle: '.draggable-area'
  });

Fiddle link

【问题讨论】:

    标签: javascript jquery jquery-ui drag-and-drop


    【解决方案1】:

    你的意思是这样的?当您拖放 c 时,c 会增加,而当重复时 c 保持不变?

      var c = 1;
      $(".textTemplate").draggable({
        helper: "clone",
        zIndex: 2500,
      });
      $( "#editorDesignView" ).droppable({
            accept: '.textTemplate',
          drop: function( event, ui ) {
            var html = '<div id="test-clone-'+c+'" class="test" style="background: #eee; width: 80%; margin: 10px auto; padding: 10px;"><p contenteditable="true" style="padding: 5px;">Add your text here. ' + c + '</p><div style="padding:10px; width:50%;" class="draggable-area">drag me</div><div style="padding:10px;width:50%;" class="js-duplicate">duplicate me</div></div>';
      $(html).appendTo(this).hide().slideDown();
            c++;
          }
        });
      $('#editorDesignView').sortable({
      handle: '.draggable-area'
      });
    

    【讨论】:

      【解决方案2】:

      真正的方法是计算在editorDesignView 中以test-clone- 开头的id 的div 元素。

      var cloneCount = $("#editorDesignView").find("div[id^='test-clone-']").length+1;
      

      cloneCount 现在保存要分配给已删除元素的数字。

      对于拖动的克隆(重新排序)也是如此。
      这将确保正确的数字。

      实际上,如果您对克隆进行重新排序,最后一个元素是引用,并且可能没有最高编号。

      这是你的updated Fiddle

      【讨论】:

      • 一件事我想知道,如果我想要这样的 id (test-clone-45f63(random number)-1)
      • 您可以将^= 运算符用于“开始于”,将*= 用于“包含”。现在,如果您使用随机数,您将不再确保唯一的 id,因为随机数可能会重复......并且 random-1 可能已经存在。如果你想随机化一个部分,它不应该是使 id 唯一的那个......如果你想计算元素,如果你使用 the id 来计算它们,则必须有一个固定的部分。你可以为它使用一个类。
      • 我认为它没用......因为增量部分是强制性的。 ;)
      • 但如果目标是“伪装” id 以便控制台嗅探器会挠头......你可以做类似[随机 5 个数字][从 01 到 99 的增量 2 位][随机第 3 部分数字]。而且很难注意到增量。而id 将是唯一的,因为位置 6 和 7 的数字...哈哈... ;) 并使用一个类来计算元素。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多