30624


jQueryのカスタムイベントを定義するとき

[code]

    $(selector).on('myevent');
    
[/code]

のように指定すると思うのですが、  
例えばclickイベントはすべてのセレクターに対してon('click')できますよね。

しかし、上記の方法だと特定のセレクターに対してしかイベントを発火させることができません。

何か方法があれば教えてください。よろしくお願いします。

例えば、このような場合です。

[code]

    var flag = 0;
    
    $(window).on(
    {
      'mousedown': function()
      {
        flag = 1;
      },
      'mousemove': function()
      {
        if (flag === 1) flag = 2;
      },
      'mouseup': function()
      {
        if (flag == 2)
        {
          // ドラッグ終了時のイベント追加
          $(window).trigger('dragend');
        }
    
        flag = 0;
      }
    });
    
    // $(window)に対してのみ使える
    $(window).on('dragend', function()
    {
      console.log('ドラッグ終了');
    });
    
    // こんな風に色々な要素に適用させたい
    $('.element').on('dragend', function()
    {
      console.log('.elementのドラッグ終了');
    });
    $('#element').on('dragend', function()
    {
      console.log('#elementのドラッグ終了');
    });
    
[/code]

このように色々な要素のドラッグを検知したいのですが、どのように記述すればよいのか分かりません。


CC BY-SA 3.0
2016-11-23T20:33:17.800
30622
2017-09-29T03:45:33.547
2016-11-23T21:54:31.787
19687
19687
question
javascript jquery
jQueryのtriggerについて


これでどうでしょうか。

[code]

    'mouseup': function(event)
    {
      if (flag == 2)
      {
        // ドラッグ終了時のイベント追加
        $(enent.target).trigger('dragend');
      }
    
      flag = 0;
    }
    
[/code]

`enent.target`は`mouseup`が発生したエレメントです。  
jQuery 1.3から`trigger()`したイベントはバブルアップするので、そのエレメントの親たちが`dragend`を受け取れます。


CC BY-SA 3.0
2016-11-23T22:13:48.720
30624
2016-11-23T22:19:18.807
2016-11-23T22:19:18.807
19437
19437
30622
answer