shown.bs.modal fires multiple times when you close and reopen modal

后端 未结 7 533
囚心锁ツ
囚心锁ツ 2020-12-29 08:07

I have made a fiddle illustrating the issue I am facing at the moment. So every time I close and open a modal, shown.bs.modal also fires multiple times. In this

7条回答
  •  生来不讨喜
    2020-12-29 08:48

    The accepted answer from @Put12co22mer2 is correct. However, there are times when you want to rebind the event when opening the modal. Let's say you got some options that should be used.

    function openTestModal(options){
        $('#testModal').modal({
            keyboard: false,
            backdrop: 'static'
        });
    
        $('#testModal').one('shown.bs.modal', function (e) {
            // do something with options
            alert(options.foo);
        });
    }
    
    $('.testButton').click(function(){
        openTestModal({ foo: bar});
    });
    

    Then you can use one instead of on. The result will be the same as unbinding, but a bit cleaner in my opinion.

    http://api.jquery.com/one/

    The .one() method is identical to .on(), except that the handler is unbound after its first invocation

提交回复
热议问题