单击新插入的变量块中的关闭按钮时没有任何反应

Nothing happening on clicking on close button in newly inserted variable- block

本文关键字:关闭按钮 任何反 变量 新插入 插入 单击      更新时间:2023-09-26

inserAfter 工作正常,但我也想执行删除。单击带有closequest ID的按钮时,即使警报消息没有出现,也没有任何反应。

//for adding ques ans and comment
var qBlock = '<div class="newqandaBlock"><div class="input-group margin-bottom-20"><span class="input-group-addon purple"><i class="fa fa-question"></i></span><input type="text" class="form-control" placeholder="Question Asked "><button type="button" id="closequest" class="btn btn-purple" style="position: absolute;top: 3px;"><span> <i class="fa  fa-close"></i></span>close</button></div> <div class="input-group margin-bottom-20"> <span class="input-group-addon purple"><i class="fa fa-reply"></i></span><textarea rows="3" class="form-control" name="info" placeholder="Your Answer"></textarea> </div><div class="input-group margin-bottom-20"><span class="input-group-addon purple"><i class="fa fa-comments"></i></span><textarea rows="3" class="form-control" name="info"  placeholder="Add Your Comments"></textarea> </div></div>';
$("#addQuestion").on("click", function() {
  $(qBlock).insertAfter(".qandaBlock");
});
$(document).ready(function() {
  $("#closequest").on("click", function() {
    alert("ok");
    $('qblock').remove(".newqandaBlock");
  });
}); < /script>	
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-md-12 col-sm-12">`
  <form id="resetblock" name="resetblock">
    <div class="qandaBlock">
      <div class="input-group margin-bottom-20">
        <span class="input-group-addon purple"><i class="fa fa-question"></i></span>
        <input type="text" class="form-control" placeholder="Question Asked ">
      </div>
      <div class="input-group margin-bottom-20">
        <span class="input-group-addon purple"><i class="fa fa-reply"></i></span>
        <textarea rows="3" class="form-control" name="info" placeholder="Your Answer"></textarea>
      </div>
      <div class="input-group margin-bottom-20">
        <span class="input-group-addon purple"><i class="fa fa-comments"></i></span>
        <textarea rows="3" class="form-control" name="info" placeholder="Add Your Comments"></textarea>
      </div>
    </div>
    <button type="button" class="btn btn-default" id="addcomment" onclick="resetform()">Reset</button>&nbsp;
    <button type="button" class="btn btn-purple" id="addQuestion">
      <i class="fa  fa-plus-square-o"></i>&nbsp;Add Another Question
    </button>
</div>
</form>
</div>

这里的问题是动态添加的元素必须告诉jQuery它们存在。早些时候我们使用live但现在jQuery支持。 上是委派。它说查找此元素上发生的所有事件,或者它是子元素,即您可以将其范围限定为特定的子元素。因此,请选择存在的最接近的父项,而不是正文或文档。

此外,id 必须是唯一的,因此在这种情况下您不能使用 id 而使用类。

将脚本标记放在关闭正文之前

 
var qBlock='<div class="newqandaBlock"><div class="input-group margin-bottom-20"><span class="input-group-addon purple"><i class="fa fa-question"></i></span><input type="text" class="form-control" placeholder="Question Asked "><button type="button" id="" class="btn btn-purple closequest" style=""><span> <i class="fa  fa-close"></i></span>close</button></div> <div class="input-group margin-bottom-20"> <span class="input-group-addon purple"><i class="fa fa-reply"></i></span><textarea rows="3" class="form-control" name="info" placeholder="Your Answer"></textarea> </div><div class="input-group margin-bottom-20"><span class="input-group-addon purple"><i class="fa fa-comments"></i></span><textarea rows="3" class="form-control" name="info"  placeholder="Add Your Comments"></textarea> </div></div>';
$("#addQuestion").on("click",function(){        
     $(qBlock).insertAfter(".qandaBlock");
});
$("#resetblock").on("click",'.closequest',  function(){ 
     alert("ok");     
     $(this).closest(".newqandaBlock").remove();        
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="col-md-12 col-sm-12">`      
        <form id="resetblock" name="resetblock" >   
            <div class="qandaBlock"> 
                <div class="input-group margin-bottom-20"> 
                    <span class="input-group-addon purple"><i class="fa fa-question"></i></span>
                    <input type="text" class="form-control" placeholder="Question Asked ">
                </div>
                <div class="input-group margin-bottom-20"> 
                    <span class="input-group-addon purple"><i class="fa fa-reply"></i></span>
                    <textarea rows="3" class="form-control" name="info" placeholder="Your Answer"></textarea> 
                </div>
                <div class="input-group margin-bottom-20">
                   <span class="input-group-addon purple"><i class="fa fa-comments"></i></span>
                   <textarea rows="3" class="form-control" name="info" placeholder="Add Your Comments"></textarea> </div>
                </div>
                <button type="button" class="btn btn-default" id="addcomment" onclick="resetform()">Reset</button>&nbsp;
                <button type="button" class="btn btn-purple" id="addQuestion">
                    <i class="fa  fa-plus-square-o"></i>&nbsp;Add Another Question
                </button>
            </div>
        </form>
</div>

应按如下所示委派事件处理程序,以便事件处理程序使用动态添加的元素。

除此之外,不要在动态注入的模板中使用id - 改用类名,否则会使您的 HTML 无效。最后,您应该保留对添加块的引用:

//for adding ques ans and comment
 var qBlock = '<div class="newqandaBlock"><div class="input-group margin-bottom-20"><span class="input-group-addon purple"><i class="fa fa-question"></i></span><input type="text" class="form-control" placeholder="Question Asked "><button type="button" class="btn btn-purple closequest" style="position: absolute;top: 3px;"><span> <i class="fa  fa-close"></i></span>close</button></div> <div class="input-group margin-bottom-20"> <span class="input-group-addon purple"><i class="fa fa-reply"></i></span><textarea rows="3" class="form-control" name="info" placeholder="Your Answer"></textarea> </div><div class="input-group margin-bottom-20"><span class="input-group-addon purple"><i class="fa fa-comments"></i></span><textarea rows="3" class="form-control" name="info"  placeholder="Add Your Comments"></textarea> </div></div>';
 $(document).ready(function() {
   var latestBlock;
   $("#addQuestion").on("click", function() {
     latestBlock = $(qBlock).insertAfter(".qandaBlock");
   });
   $(document).on("click", ".closequest", function() {
     alert("ok");
     latestBlock.remove();
   });
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-md-12 col-sm-12">`
  <form id="resetblock" name="resetblock">
    <div class="qandaBlock">
      <div class="input-group margin-bottom-20">
        <span class="input-group-addon purple"><i class="fa fa-question"></i></span>
        <input type="text" class="form-control" placeholder="Question Asked ">
      </div>
      <div class="input-group margin-bottom-20">
        <span class="input-group-addon purple"><i class="fa fa-reply"></i></span>
        <textarea rows="3" class="form-control" name="info" placeholder="Your Answer"></textarea>
      </div>
      <div class="input-group margin-bottom-20">
        <span class="input-group-addon purple"><i class="fa fa-comments"></i></span>
        <textarea rows="3" class="form-control" name="info" placeholder="Add Your Comments"></textarea>
      </div>
    </div>
    <button type="button" class="btn btn-default" id="addcomment" onclick="resetform()">Reset</button>&nbsp;
    <button type="button" class="btn btn-purple" id="addQuestion">
      <i class="fa  fa-plus-square-o"></i>&nbsp;Add Another Question
    </button>
</div>
</form>
</div>

$('qblock') 不是有效的 HTML 元素,这不起作用,不要忘记 '." 或 '#'。使用 $('.newqandaBlock').remove() 之类的东西来删除类。