如何从Bootstrap接收shown.bs.collapse事件?

时间:2017-10-13 19:13:55

标签: twitter-bootstrap-3

我无法从Bootstrap 3.3.6收到shown.bs.collapse事件。我已经对我的bootstrap.js进行了检测,以确保该事件在我认为的情况下被解雇:

this.$element.trigger('shown.bs.collapse')
console.log("triggered shown.bs.collapse on #" + this.$element.attr("id"))

在我准备好的文档中,我尝试使用jQuery和纯JS注册事件:

$('.panel-collapse').on('shown.bs.collapse', function () {
    console.log("listener called");
});

...或...

var panels = document.getElementsByClassName("panel-collapse");
for (var i = 0; i < panels.length; ++i) {
    console.log("adding event listener to #" + panels[i].getAttribute("id"));
    panels[i].addEventListener("shown.bs.collapse", function () {
        console.log("listener called");
    });
}

JS版本记录了在bootstrap.js中触发事件时记录的相同元素ID,证明我将侦听器附加到正确的元素。但它从未被召唤过。

更奇怪的是,这一切都适用于jsfiddle,但不是在我们将代码复制到应用程序中时。我认为某些软件包版本或设置在某个地方搞砸了。什么可能导致这种情况?

1 个答案:

答案 0 :(得分:0)

根据this Stack Overflow post,你不能使用&#34; .addEventListener&#34;对于自定义jQuery事件(例如&#34; shown.bs.collapse&#34;)。

我不能说为什么jQuery&#34; .on&#34;但版本不会起作用。