我对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,所以当'action'发生时(就像一个事件处理程序),调用一些方法!稳定的硬编码
fof.click(function(){
})
我该怎么做?
答案 0 :(得分: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"
答案 1 :(得分:0)
抱歉,最后的答案很简短。我假设你正在使用jquery
如果不包括在您的:
最好在您的文档准备部分中完成附加事件,您也可以将其放入。 所以这就是一切都会是这样的。
$(document).ready(function() {
($'.of').click(function () {
$(this).do something or function($this)
});//end click
});//end ready
如果你想循环并对所有人做些什么。那么...... $('。of')。each(function(){ //做一点事 });
这里不要过多担心匿名函数,请务必使用它们。如果你想要了解它们是什么,谷歌搜索“匿名函数”,“lamda表达式”或“函数式编程”应该让你忙一段时间。