0

我对 javascript 对象有点困惑,说我有下面的 DOM

<div class='of'></div>
<div class='of'></div>
<div class='of'></div>
<div class='of'></div>

 //select all of them 
  var fof = $('.of')

所以 fof 是一个包含 4 个 DOM 对象的数组,对吧?我可以将 fof 视为 javascript 对象,并定义一些方法,例如:

fof = {
  open:function(){

   }
 }

是否可以为 fof 定义一些“动作”?就像单击 dblclick,所以当“动作”发生时(如事件处理程序),调用一些方法!稳定的硬编码

fof.click(function(){

})

我怎样才能做到这一点?

4

2 回答 2

1

好的,首先是基础知识。在 Javascript 中,函数是第一类对象。这意味着您可以执行以下操作:

var foo = function() { return 1 + 1;};

你可以这样做:

var foo = 5;

在 Javascript 中,所有真正的对象(几乎除了原语之外的所有对象)都具有属性。这些属性可以设置为可以将变量设置为的任何内容:

var foo = {};
foo.bar = function() { return 1 + 1; }
foo.baz = 5;

每当您看到在对象上使用的方法时,您只是看到设置为正在运行的属性的函数。

由于 jQuery 结果对象(例如$('.of'))不仅仅是一个数组,它是一个 Javascript 对象,它可以具有属性,而这些属性可以是函数。所以你绝对可以这样做:

var fof = $('.of')
fof.foo = function() { return 1 + 1; };
fof.foo();

最后,您询问了如何制作自己的类似 jQuery 的事件。使用 jQuery 很容易做到这一点。这是一个简单的例子:

var fakeObject = {};
fakeObject.fakeMethod = function() {
    // do something 
    $.trigger(this, 'myFakeClick');
}

var fakeObjectWatcher = {}
fakeObjectWatcher.react = function() { alert('someone did something'); };
$(fakeObject).on('myFakeClick', fakeObjectWatcher.react);

fakeObject.fakeMethod(); // triggers myFakeClick event
// fakeObjectWatcher will now alert "someone did something"
于 2012-07-13T05:03:43.903 回答
0

抱歉,最后一个答案有点短。我假设您正在使用 jquery。
如果不包括在你的:

附加事件最好在您的文档准备部分完成,您也可以将其放入。所以这就是一切的样子。

$(document).ready(function() {
    ($'.of').click(function () {
        $(this).do something or function($this) 
    });//end click
});//end ready

如果您想循环并对所有 .of 执行某些操作,那么... $('.of').each(function() { //do something });

不要太担心这里的匿名函数,一定要使用它们。如果你想知道它们是什么,任何关于“匿名函数”、“lamda 表达式”或“函数式编程”的谷歌搜索都会让你忙一阵子。

于 2012-07-13T05:15:53.343 回答