javascript - 无法将动态创建的嵌套 div 从一个 div 移动到另一个 div

标签 javascript jquery

我根据父 div 内的输入创建了一些动态 div。

现在我想做的是,如果我单击这些创建的 div 之一,它应该移动到其他父 div,反之亦然。

我的代码:

/*Html code*/

<input type="text" id="txtName" />
<input type="button" value="ok" id="btnSave" />
<div id="firstDiv">
<div id="1" class="a">Value</div>(Working over statically created div  )
</div>
<br>
--------------
--------------
-------------
<br>
<div id="SecondDiv">
<div id="4" class="b"> 
</div>
</div>

和 JavaScript 代码:

  $(document).ready(function() {
  $('#btnSave').click(function() {
  addDiv($('#txtName').val());
  $('#txtName').val('');
  });
  $("div.a").on("click", function() {
  var $this = $(this);
 if ($this.hasClass("a")) {
    $this.removeClass("a").addClass("b").prependTo("#firstDiv");
 } else {
    $this.removeClass("b").addClass("a").prependTo("#SecondDiv");
 }
 });   

});

function addDiv(name) {
var container = $('#firstDiv ');
$('<div />', {class:'a',text:name }).appendTo(container).after("<br/>");
}

但代码仅适用于已创建的 div。我对此进行了测试,但它不适用于动态创建的 div。

我想要的是我可以动态创建子 div 并在单击时将其移动到另一个 div。

一个Sample Fiddle还添加了

最佳答案

尝试:

$(document).ready(function() {
        $('#btnSave').click(function() {
            addDiv($('#txtName').val());
            $('#txtName').val('');
        });
         allowToggleDivLocation("div.a");
    });
    
    function allowToggleDivLocation(a){
        $(a).on("click", function() {
            var $this = $(this);
            if ($this.hasClass("a")) {
                $this.removeClass("a").addClass("b").prependTo("#firstDiv");
            } else {
                $this.removeClass("b").addClass("a").prependTo("#SecondDiv");
            }
        });
    }
    
    function addDiv(name) {
        var container = $('#firstDiv '),
            c = $('<div />', {class:'a',text:name });
        allowToggleDivLocation(c);
        c.appendTo(container).after("<br/>");
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="txtName" />
<input type="button" value="ok" id="btnSave" />
<div id="firstDiv">
<div id="1" class="a">Value</div>(Working over statically created div  )
</div>
<br>
--------------
--------------
-------------
<br>
<div id="SecondDiv">
<div id="4" class="b"> 
</div>
</div>

没有测试它,但它应该可以工作。

$(document).ready(function() {
        $('#btnSave').click(function() {
            addDiv($('#txtName').val());
            $('#txtName').val('');
        });
         allowToggleDivLocation("div.a");
    });
    
    function allowToggleDivLocation(a){
        $(a).on("click", function() {
            var $this = $(this);
            if ($this.hasClass("a")) {
                $this.removeClass("a").addClass("b").prependTo("#firstDiv");
            } else {
                $this.removeClass("b").addClass("a").prependTo("#SecondDiv");
            }
        });
    }
    
    function addDiv(name) {
        var container = $('#firstDiv '),
            c = $('<div />', {class:'a',text:name });
        allowToggleDivLocation(c);
        c.appendTo(container).after("<br/>");
    }

<input type="text" id="txtName" />
<input type="button" value="ok" id="btnSave" />
<div id="firstDiv">
<div id="1" class="a">Value</div>(Working over statically created div  )
</div>
<br>
--------------
--------------
-------------
<br>
<div id="SecondDiv">
<div id="4" class="b"> 
</div>
</div>

关于javascript - 无法将动态创建的嵌套 div 从一个 div 移动到另一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43127516/

相关文章:

javascript - 如何(最好)在作为回调传递的对象方法中访问 'this'

javascript - 如何让 select onchange 事件在页面加载时发生?

javascript - 如何在 JavaScript 中编码字符串以在 HTML 中显示?

javascript - 根据从表中的选择选项标签中选择的项目计算两个输入字段的总值

javascript - 切换 anchor 仅在第一个 child 中工作?

javascript - float div 无法居中或右对齐

javascript - 为什么 drop 元素在 jquery 中排在首位?

javascript - 使用 jquery 或 javascript 在文本框中获取 cookie 值

javascript - cordova 应用程序中的 addEventListener ('deviceready' )问题

javascript - 如何使用ace编辑器制作html和css实时预览