Javascript 在jquery中添加和删除div无效

Javascript 在jquery中添加和删除div无效,javascript,jquery,Javascript,Jquery,我正在尝试添加问题框,如下图所示,第一个删除按钮工作正常。但是,当我动态添加div并尝试删除它时,它不起作用。我尝试在删除问题时发出警告,但它仍然不起作用。有人能帮我吗 JS <script type="text/javascript"> jQuery(document).ready(function(e) { jQuery( '#add-question' ).on('click', function() { var lastId = jQuery('.d

我正在尝试添加问题框,如下图所示,第一个删除按钮工作正常。但是,当我动态添加div并尝试删除它时,它不起作用。我尝试在删除问题时发出警告,但它仍然不起作用。有人能帮我吗

JS

<script type="text/javascript">
jQuery(document).ready(function(e) {

    jQuery( '#add-question' ).on('click', function() {
        var lastId = jQuery('.del-question').last().data('id');
        var nextId = lastId+1;
        var questionBox = '<div class="question-box box-1"><h2>Question 1</h2><input type="text" name="ques_title" class="ques_title" placeholder="Enter question title" value=""><div class="form-group"><a class="del-question button" href="#" data-id="1">Remove</a></div></div>';
        jQuery('.question-box').after(questionBox);
        return false;
    });

    jQuery( '#quiz-box .del-question' ).on('click', function() {
        var id = jQuery(this).data('id');
        jQuery('.box-'+id).remove();
        return false;
    });
});
</script>

jQuery(文档).ready(函数(e){
jQuery(“#添加问题”)。在('click',function()上{
var lastId=jQuery('.del question').last().data('id');
var nextId=lastId+1;
var questionBox=‘问题1’;
jQuery('.questionBox')。在(questionBox)之后;
返回false;
});
jQuery('#quick box.del question')。在('click',function()上{
var id=jQuery(this).data('id');
jQuery('.box-'+id).remove();
返回false;
});
});
HTML

<div id="quiz-box">
  <div class="question-box box-1">
   <h2>Question 1</h2>
   <input type="text" name="ques_title" class="ques_title" placeholder="Enter question title" value="">
   <div class="form-group">
    <a class="del-question button" href="#" data-id="1">Remove</a>
   </div>
 </div>
 <div class="form-group">
  <a id="add-question" class="button" href="#">Add</a>
 </div>

问题1

我给你写了一个片段

问题是无法将事件绑定到动态对象。 $(文档).on是必需的

另外,我使用了clone()并添加了一个“renameQuestions”函数,只是为了给您提供一种更好的方法来实现所需的功能

$(文档).ready(函数(e){
函数addQuestion(){
var question=$(“#问题模板”).clone();
css(“显示”、“块”).removeAttr('id');
$('问题')。附加(问题);
}
函数重命名equestions(){
$(“.问题框”)。每个(函数(i,v){
$(this.find('.question_id').html(i);
});
}
$(“#添加问题”)。在('click',function()上{
添加问题();
重命名等式();
});
$(文档).on('click','del question',function()
{
$(this).closest('.question box').remove();
重命名等式();
});
});

问题:

侧注的可能重复:传递到
ready
回调中的第一个参数是
jQuery
,因此将其命名为
e
有点误导性,因为它通常与事件对象相关联,而不是。Ok,是的,我指的是你提到的@Taplar:)我根据帖子对代码进行了更改,但它仍然不起作用@Taplar请参考副本中有关委托事件处理程序/绑定的部分。这就是你想要的。你也可以找到他们的参考@Wow!非常感谢你。这是一种令人难以置信的高效方法。我现在真的学到了很多,我有一个简单的问题,当我动态添加时,屏幕会转到顶部,url中有“#”。我只想在我加上的时候说出来。有可能吗?你能帮我吗?