javascript - 当删除和添加 html 元素时,Jquery 代码停止工作

标签 javascript jquery html

如果没有选中任何复选框,我有以下 jquery 代码禁用按钮。否则,该按钮是可按下的。

这里是 jquery 代码:

$(function() {
 var checkboxes = $(':checkbox').click(function(event) {
 $('#group-edit-submit').prop("disabled", checkboxes.filter(':checked').length === 0);
 });

});

因此,当没有选中任何复选框时,它会继续禁用#group-edit-submit 按钮。以下是按钮标签:

<div id="group-edit-submit-wrapper">
   <input disabled id="group-edit-submit" type="submit" name="submit" value="Edit selected members" >
</div>

这是复选框标签:

<div>
   <input id="checkbox1" type="checkbox">
</div>
<div>
   </input id="checkbox2" type="checkbox">
</div>

在这种情况下工作正常。该按钮最初是禁用的。单击其中一个复选框时,将启用该按钮。

但是,当某个复选框被某个事件删除时,标签将变为:

<div>
   <input id="checkbox1" type="checkbox">
</div>

在这种情况下,即使选中了复选框,按钮也会永久禁用,除非重新加载页面。由于某种原因,当标签发生变化时,脚本无法检测到现有的复选框。

如何在不重新加载页面的情况下修复脚本?是否可以?有什么想法吗?

问候

补充说明:

大家好, 事实证明,当整个 div 被 jquery html 函数替换时,未检测到复选框选择器。

考虑以下我从 tbh 借用的 HTML 代码:

<div id="group-edit-submit-wrapper">
  <input disabled id="group-edit-submit" type="submit" name="submit" value="Edit selected members" >
</div>
<div id="some_container">
  <div>
    <input id="checkbox1" type="checkbox">
  </div>
  <div id="cbHolder">
    <input id="checkbox2" type="checkbox">
  </div>
</div>
<input class="toggle" type="button" value="Toggle Checkbox">

问题中的元素在#some_container div 中。因此,它具有以下切换元素的 javascript。当它命中时,整个#some_container 将被替换为 jquery html() 函数:

$(function() {
   var checkboxes = $('input:checkbox').on('click',
     function(event) {
        $('#group-edit-submit').prop("disabled",checkboxes.filter(':checked').length === 0);
      });

     var toggle= true;
     $('.toggle').on('click',function(){
       toggle = !toggle;
       if(toggle){
         $('#some_container').html('<div><input id="checkbox1" type="checkbox"></div><div id="cbHolder"><input id="checkbox2" type="checkbox"></div>');
       }else {
         $('#cbHolder').remove();
     }
  });
});

无论我们如何编写“禁用复选框”功能,该问题都会出现。知道如何解决这个问题吗?

最佳答案

编辑:在 OP 的新评论之后,此更改将修复它:

function SetupCheckboxClick() {
     $('input:checkbox').on('click', function(event) {
        $('#group-edit-submit').prop("disabled",$('input:checkbox').filter(':checked').length === 0);
      });
}
$(function() {
     SetupCheckboxClick();

     var toggle= true;
     $('.toggle').on('click',function(){
       toggle = !toggle;
       if(toggle){
         $('#some_container').html('<div><input id="checkbox1" type="checkbox"></div><div id="cbHolder"><input id="checkbox2" type="checkbox"></div>');
         SetupCheckboxClick();
       }else {
         $('#cbHolder').remove();
     }
  });
});

关于javascript - 当删除和添加 html 元素时,Jquery 代码停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127851/

相关文章:

javascript - 如何通过匹配id将数组插入对象

javascript - 使用 onclick javascript 打开 html 文件

javascript - 通用 Javascript 图像交换

javascript - jQuery .css() 方法不起作用

javascript - 如何将 VueJS 应用程序插入现有页面?

javascript - Jquery 表单计算不对齐

html - CSS clip-path 适用于 Firefox,但不适用于 chrome

c# - 选择 Span 类元素

javascript - Controller 的 ngdoc 文档

javascript - 在 Django 中使用 Ajax 的问题