【问题标题】:Bootstrap, jQuery in modal doesn't workBootstrap,模态中的jQuery不起作用
【发布时间】:2014-11-26 10:05:59
【问题描述】:

我正在制作一个页面,您可以在其中检查表格中的几行,然后将它们导出。

这里是代码http://www.bootply.com/Hrll6yz0c1

向模态导出菜单添加行的代码效果很好,但删除模态内行的代码不起作用。

删除代码

$('button#delB').click(function() {
     $(this).parent().parent().remove();
});

对于这个生成的表

$('button#addB').click(function() {
                        var toAdd = $(this).parent().parent().find("#sub_id").html();
                        var toAdd2 = $(this).parent().parent().find("#val1").html();   
                        var toAdd3 = $(this).parent().parent().find("#val2").html(); 
                        $('#tblGrid').append("<tr><td>"+toAdd+"</td><td>"+toAdd2+"</td><td>"+toAdd3+"</td><td><button type='button' class='btn btn-default glyphicon glyphicon glyphicon-remove' id='delB'></button></td></tr>"); 

 });

我尝试使用相同的代码删除外部模式,它正在工作。

【问题讨论】:

  • 请在问题中包含您的相关代码。另外,ids 应该是唯一的!
  • 我怀疑您将事件处理程序绑定到绑定时不存在的按钮。以防万一,请尝试改用on()
  • George,我的代码有链接,有问题吗?
  • @Deniss 您链接到您的代码没有问题,只要您在问题中也包含相关代码

标签: javascript jquery html twitter-bootstrap bootstrap-modal


【解决方案1】:

正如我所怀疑的,delB 元素是动态生成的。因此,在您尝试将 click 事件处理程序绑定到它们时,它们不存在。因此,on() 更适合您尝试做的事情:

$(document).on('click','button#delB',function() {                      
   $(this).parent().parent().remove();
});

http://api.jquery.com/on/

注意:$(document) 很可能是调用 on() 的不必要范围,请根据您的上下文使其更具体。

顺便说一句:听从 George 的建议,确保你的 id 都是唯一的,否则你会遇到问题。

【讨论】:

  • 投反对票来解释为什么?我实际上喜欢投反对票,但前提是我可以从他们那里学到一些东西(尽管我认为这是基于时间的报复,因此对任何人都无用)。
  • 谢谢。这样可行。你的意思是我应该为每个按钮创建一个唯一的 id?
  • 嗯,除了你的按钮之外,id 的全部目的是它是一个标识符,如果它们共享相同的 id,你就不能相互识别元素。页面上的每个元素都应该有一个唯一的 ID。
  • 根据这个回答,你不需要给每个按钮一个id。添加一个类,以便每个按钮都与该功能绑定。正如@DeeMac 已经发布的那样,您可以使用$(this) 捕获活动元素。对于 Downvote,我也讨厌有人在没有解释的情况下投反对票。我为这个回答 +1 了 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 2018-05-07
相关资源
最近更新 更多