1

我正在使用 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 函数一起应用。我该怎么做?

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

提前谢谢

4

2 回答 2

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 对象。

于 2012-10-14T20:27:25.620 回答
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 操作。

于 2012-10-14T20:33:12.437 回答