Bootstrap show.bs.modal事件不适用于Firefox

时间:2015-08-12 08:08:23

标签: jquery twitter-bootstrap twitter-bootstrap-3

一旦显示模态对话框,我就会触发引导事件。一切都像Chrome上的魅力,但在Firefox中,事件永远不会触发。我的Firefox版本是38.05。这是我的代码:

    $(document).on('show.bs.modal', function () {
        $(elementEvents).each(function( i, event ) {
            console.log("binding event index " + i +" for  type " + event.type);
            currentElement.bind(event.type,event);
        });
    });

如果我更改此行

   $(document).on('show.bs.modal', function () {

通过这个作品

    $("*").on('show.bs.modal', function () {

知道为什么Firefox没有解释这个文件吗?

2 个答案:

答案 0 :(得分:2)

您必须将event绑定到实际模态。

$('#exampleModal').on('show.bs.modal', function (event) {
  var button = $(event.relatedTarget) // Button that triggered the modal
  var recipient = button.data('whatever') // Extract info from data-* attributes
  // If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
  // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
  var modal = $(this)
  modal.find('.modal-title').text('New message to ' + recipient)
  modal.find('.modal-body input').val(recipient)
});

这是一个有效的example

或者你可以将它绑定到类:

$('.modal').on('show.bs.modal', function (event) {
    alert('here I am!');
    console.log(event);
});

$('.modal').on('hidden.bs.modal', function (event) {
    alert('bye bye!');
    console.log(event);
});

如此jsFiddle所示。

答案 1 :(得分:0)

我刚遇到这个问题......我将代码移到了jQuery(document).ready()中,现在它正在为我工​​作。

jQuery(document).ready(function () {
    jQuery('.modal').on('hidden.bs.modal', function (e) {
        // whatever you want to do
    });
});