首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jquery在单击时追加div?

如何使用jquery在单击时追加div?
EN

Stack Overflow用户
提问于 2021-07-17 11:57:48
回答 3查看 210关注 0票数 0

如果单击Add,我希望在容器中一次又一次地追加div。此代码只添加一个div,然后不追加新div。

html

代码语言:javascript
复制
   <div id="mydiv">
     <div class="col-8 form-group"><label for="">Date</label>
    <input class="form-control" type="date" />
    <p class="add"> Add</strong></p>
    </div>
   </div>

jquery

代码语言:javascript
复制
 $(".add").on("click", function() {
       $('#mydiv').append(` <div class="col-8 form-group"><label for="">Date</label>
                          <input class="form-control" type="date" />
                         <p class="add"> Add</strong></p>
                        </div>`)
    });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-17 12:02:51

当需要在动态添加的html上触发操作时,需要在() $(document).on('click','.add',function() {上使用

代码语言:javascript
复制
$(document).on('click','.add',function() {

    var isValid = true;
    $("input").each(function() {
       var element = $(this);
       if (element.val() == "") {
           isValid = false;
       }
    });
    if(isValid){
        $('#mydiv').append(` <div class="col-8 form-group"><label for="">Date</label>
                          <input class="form-control" type="date" />
                         <p class="add"> Add</strong></p>
                        </div>`);
    }
       
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="mydiv">
     <div class="col-8 form-group"><label for="">Date</label>
    <input class="form-control" type="date" name="date" />
    <p class="add"> Add</strong></p>
    </div>
   </div>

票数 1
EN

Stack Overflow用户

发布于 2021-07-17 12:06:02

原因是在文档最初加载之后添加了新的add类链接,但是因为您只针对代码中的第一个add,所以jQuery没有监听它们。

您需要使用事件委托将侦听器放置在父元素上,然后捕捉到使DOM冒泡的事件。

代码语言:javascript
复制
$(document).on('click', '.add', function() {
  $('#mydiv').append('<div><label>Date</label><input type="date" /><p class="add">Add</strong></p></div>');
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div><label>Date</label>
  <input type="date" />
  <p class="add">Add</strong>
  </p>
</div>
<div id="mydiv"/>

票数 0
EN

Stack Overflow用户

发布于 2021-07-17 12:06:59

问题是动态添加的元素没有事件侦听器。您可以使用下面的代码,类似于您的代码。添加新元素时,将eventListener添加到选择器.add选择的最后一个元素。这确保了每个新元素都有evenListener

代码语言:javascript
复制
let callFunction =()=>{
       $('#mydiv').append(` <div class="col-8 form-group"><label for="">Date</label>
<input class="form-control" type="date" />
<p class="add"> Add</strong></p>
</div>`);  
}

$(".add").on("click", function() {
 callFunction();   
 $(".add").last().on("click",function(){
   callFunction();
 });
});

科德芬

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68420299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档