0

これが可能なのだろうか、私はAS3でこれを行うことができました。マウスイベントのみをリッスンするリスナーを div にバインドすることは可能ですか? たとえば、「ライオン」という div があるとします。通常、マウス イベントは次のようにバインドされます。

  $("#mouse").bind("click", function(e)
  {
     alert(e.currentTarget.id);
  }

しかし、ご覧のとおり、マウス イベントは既に「クリック」として宣言されています。私がやりたいのは、関数を作成し、その関数をdivの「ライオン」にバインドすることです。ライオンがそのようなマウス イベントに遭遇すると、関数はマウス イベント タイプをキャプチャできます。関数は次のとおりです。

  $.fn.chkType = function(e)
  {
    var evt = e.type;
    var str = "";

    switch(evt)
    {
      case "mouseover":
      str = "MOUSE OVER";
      break;

      case "mouseout":
      str = "MOUSE OUT";
      break;

      case "click":
      str = "CLICK";
      break;

      default:
      break;
   }

   alert(str);
  }

そして、この機能を「ライオン」に割り当てたい場合、どうすればこれが可能になるかわかりません。私は多くの検索を行いましたが、最も近いのは次の場所でした。

http://api.jquery.com/bind/

ご意見をお待ちしております。ありがとうございました。

4

2 に答える 2

3

バインドしたいすべてのイベントにバインドすることをお勧めします。

$("#mouse").bind("click mouseover mouseout", function(e) {
    //alert(e.currentTarget.id);
    //alert(e.type);
    console.log(this.id);
    console.log(e.currentTarget.id);
    console.log(e.type);
});

更新方法
の目的は何ですか? $.chkTypeタイプを直接警告しないのはなぜですか?

于 2012-04-30T21:12:45.460 に答える
0

独自のカスタム イベントを作成し、それらを要素にバインドできます。同じ関数を複数のイベントにバインドすることもできます。(PS jQuery 1.7 以降では、on代わりに使用bind)

$("#mouse").on("lion click", function(e){
    alert(e.type);
});

#mouseこれで、lionイベントが関連付けられました。明らかに、ブラウザーはこのイベントをトリガーできませんが、トリガーすることはできます。

$("#mouse").trigger('lion');​

これにより、カスタムlionイベントがトリガーされます。

デモ: http://jsfiddle.net/bav4K/2/

注:$.fn関数を jQuery オブジェクトにアタッチするために使用されます。あなたの場合、あまり意味がありません(あなたは を呼び出すつもりはありません$('#mouse').chkType())、代わりに使用することをお勧めし$.chkTypeます。

于 2012-04-30T21:12:27.020 に答える