如何在Javascript对象文字中命名多个事件

时间:2012-10-14 20:21:12

标签: javascript jquery

我正在使用jQuery事件来捕获rails应用程序中的事件。基本上,DOM元素上有一组事件捕获,然后调用其他函数。我想做的是为这些事件捕获提供一些命名空间,并寻找最佳方式:

我目前有(但其中有60个):

$(document).ready(function(){
  $('.edit-item').on('click', arc.event_handler.edit_item);
});

并想要以下内容 - 基本上提供edit_item,以便我们知道在哪里看:

$(document).ready(function(){
  var events.edit_item= {
    $('.edit-item').on('click', arc.event_handler.edit_item);
  };
});

但是这给了我一个错误。我熟悉基本的对象文字语法,如:

var my = {
  say_my_name: function(){
    alert('my name');
  }
}

但不确定如何将其应用于jQuery函数。我该怎么做?

我知道有一些匿名函数可以更加积极地命名这个名称,但老实说,现在只想改变这一点

事先提前

2 个答案:

答案 0 :(得分:1)

你似乎想要

var events = {
    "edit_item": $('.edit-item').on('click', arc.event_handler.edit_item)
};

var events = {};
events.edit_item = …;
// equal to
events["edit_item"] = …; // Here you could use any expression (like a variable) 
                         // instead of the string literal

现在events.edit_item是表达式返回的jQuery对象。

答案 1 :(得分:1)

也许这很有用:

var events;
$(document).ready(function(){
  events = {
    edit_item: $('.edit-item').on('click', arc.event_handler.edit_item),
    other_item: $('.other-item').on(/* something else */),
    //... 
    // the last item without trailing comma
  };
});

请注意行尾的逗号。但是IE不喜欢最后一行之后的逗号,所以省略它。

events对象包含jQuery对象,因此您可以将更多事件绑定到它或对它们执行其他jQuery操作。