添加了javaScript的BootStrap Switch不会触发事件

时间:2017-02-09 10:10:59

标签: javascript jquery html bootstrap-switch

已编辑,请转到

我有一个表,每行有一个行点击事件。问题是我在最后一列(“BootstrapSwitch”)中添加了一个开关,并且该开关不会触发状态更改或单击事件,因为行单击事件与其重叠。我知道这个事件是有效的,因为如果我把开关放在任何其他地方就行了。

是否有行事件在所有行中只有一列?

// Switch event
$('[name="my-checkbox"]').on('switchChange.bootstrapSwitch',  function(event, state) {
  console.log(this); // DOM element
  console.log(event); // jQuery event
  console.log(state); // true | false
});

// row click
$(document).on('click','.rowDev', function(e) {
    e.preventDefault();
    // more code
});

修改

提供的答案应该对我有所帮助,但我注意到了另一个问题。射击事件问题。使用JScript切换到表并且初始化可能不起作用,因为任何动态添加的交换机都可以工作,只是我手动添加的.html

这是我添加到表格中的行

"<td><input class='make-switch' type='checkbox' name='my-checkbox' "+ (!anyUnattendedAlert?"checked ":"")+"data-on-color='success' data-off-color='danger' data-on-text='Si' data-off-text='No'>" +
                                    "</td>"+

并且添加所有行时

$("[name='my-checkbox']").bootstrapSwitch();

还尝试初始化我添加的每一行。 我一直在尝试其他没有行事件的表,但仍未触发切换事件(下面的评论中提供了事件)。

仍然不知道如何添加这些开关并使其正常工作。

P.D:css和js有效,因为手动添加了交换机触发事件。

由于

1 个答案:

答案 0 :(得分:4)

您可以通过在Bootstrap Switch控件上触发的click事件上调用.rowDev来解决此问题。这将阻止事件冒泡DOM并触发父$('[name="my-checkbox"]').on('click', function(e) { e.stopPropagation(); });

on()

请注意,如果您愿意,也可以在一次$('[name="my-checkbox"]').on({ 'switchChange.bootstrapSwitch': function(e, state) { console.log(this); // DOM element console.log(e); // jQuery event console.log(state); // true | false }, 'click': function(e) { e.stopPropagation(); } }); 电话中将两个事件处理程序一起加入:

textfile