LoginSignup
1
0

More than 5 years have passed since last update.

jQuery.one()で同じDOMに複数イベント貼った場合の挙動

Posted at
(function (global, $) {

    $(function() {

        function _setEvent() {
            $('#one').one('click', function() {
               console.log('one!'); 
            });            
        }

        _setEvent();
        _setEvent();
    });

}(window, jQuery));
<p id='one'>one</p>

<style>
    #one {
        width: 100px;
        background: #ddd;
        height: 100px;        
    }
</style>

ためしたところ、n回イベント貼ったら、n回イベント貼られるようです。
上の例だと、#oneには2回分のone()イベントが貼られていて、2回クリックすると2個コンソール出力され、それ以降はイベント発火しなくなる
という挙動になりました。

なんかてっきりoneでイベント貼れば一度しか発火しないと思ってました。
ロジック上、イベントを貼り直す必要がある場合、一度off()でイベント解除してからon()する必要があるようです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0