是否可以将自定义函数而不是事件绑定到JQuery中的div?

时间:2012-04-30 21:07:24

标签: javascript jquery

我想知道这是否可行,我能够用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/

我很感激您的意见。 谢谢。

2 个答案:

答案 0 :(得分: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方法的目的是什么?为什么不直接提醒类型?

答案 1 :(得分:0)

您可以制作自己的自定义事件,并将它们绑定到元素。您甚至可以将相同的功能绑定到多个事件。 (P.S.在jQuery 1.7+中,使用on代替bind

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

现在#mouse附加了lion个事件。显然,浏览器无法触发此事件,但您可以。

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

这将触发您的自定义lion事件。

DEMO:http://jsfiddle.net/bav4K/2/

注意:$.fn用于将函数附加到jQuery对象。如果你的情况没有多大意义(你不会打电话给$('#mouse').chkType()),我建议改用$.chkType