【问题标题】:jQuery on 'click' not triggering after change to a bootstrap table更改为引导表后,“单击”上的 jQuery 未触发
【发布时间】:2016-06-30 21:37:52
【问题描述】:

情况

我正在使用引导程序根据对象数组中的值呈现表。我有一个有一个jQuery的select('更改')方法,以便选择从列表中的项目时,基于所选值呈现新表。

当点击顶行时,表格使用引导折叠来显示/隐藏表格中的行。该行中的最后一项有一个字形箭头,表示该行可以折叠/展开,如下图所示

collapse with glyphicon

我正在使用下面的 jQuery 来切换图标

$('#tog').on('click', function() {
  console.log("tog clicked");
  $(this).find('span').toggleClass('glyphicon-arrow-up glyphicon-arrow-down');
});

到目前为止,我已经完成了这一切,正如这个小提琴 http://jsfiddle.net/vgfb74u0/ 所示

问题

我面临的问题是,当基于所选项目呈现新表格时,不会触发更改字形的 jQuery,因此当表格展开时,图标保持不变。

我在方法开始时放入了一些 console.log,但我从来没有看到它触发过。所以对于我的新手来说,点击事件永远不会被触发。

我很惊讶自己能走到这一步,却不知问题可能出在哪里,因此非常欢迎任何帮助、指点或建议!

【问题讨论】:

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


    【解决方案1】:

    您需要手动将事件绑定到任何动态创建的元素,或者让 jQuery 为您完成。

    变化

    $('#tog').on('click', function() {});
    

    $('html').on('click', '#tog', function() {});
    

    将告诉 JavaScript 将事件委托给在 <html> 元素内创建的任何 #tog

    【讨论】:

    • 非常感谢。我挣扎着无法理解为什么它没有触发。这非常有效。
    【解决方案2】:

    问题是重新渲染表时事件处理程序丢失。 解决方法是以不同的方式附加处理程序:$('.table').on('click', '#tog', function() {...}

    See the updated jsfiddle

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 2015-01-07
      • 2021-01-06
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      相关资源
      最近更新 更多