2012-10-11 30 views
0

我对自定义事件做了很多研究(Google),但似乎无法找到我的问题的答案。了解JavaScript自定义事件监听器

我的问题是:在this example,我有divdiv我滑动内,想使附加到所有子div的自定义事件是如此,每当孩子div的偏移左边会到达一定范围内的div将执行的自定义侦听器。

所以,真正的问题是:我是我能够使在同一水平上真正的自定义事件监听onchangeclickonmouseup等。其中会听什么,我希望他们听?

+1

“自定义事件”意味着您*手动*触发一个事件 - 您不能仅仅指定一个条件来触发遇到的事件。 – Bergi

+0

是的我想说自定义事件监听器 – zero

+0

是的,你只是注册自定义事件的监听器。只有在事件没有被触发的情况下,它们才会无用...... – Bergi

回答

1

我看到你正在使用jQuery。用jQuery定义自定义事件非常简单。我用一个模式是这样的:

// Constructor 
function Colorbar() { 
    this.events = $({}); 
    // (Whatever else is in the class) 
} 
colorbar = new Colorbar(); 

然后,您可以监听任何名称的一个事件:

colorbar.events.on("currentcolorchanged", function(e, cb, ncolor) { 
    helper.doColorChanged(ncolor); 
}); 

和触发它:

this.events.triggerHandler("currentcolorchanged", [this, ncolor]); 

如果您正在使用DOM对象工作,只是缓存DOM对象的jQuery:

var $ele = $("#myElement"); 
$ele.on("myCustomEvent", function(e) { 
    // Event handler 
}); 
$ele.triggerHandler("myCustomEvent"); 
+0

您的示例看起来像我必须手动触发事件。我试图建立的是一个事件监听器,当我附加它的对象满足我指定的条件时,会自动触发一个函数。就像当鼠​​标移过它所附着的物体时,onmousemove会发生火灾。 – zero

+2

@zero即使使用我的解决方案,您也必须手动触发事件。 –

+1

@零,所有事件手动触发。鼠标事件触发是因为当鼠标执行某些操作时,浏览器会手动触发它们。 –

0

是的,您可以制作真正的定制事件,像onchange点击onmouseup等,但您必须根据现有事件或方法自行编写侦听器代码。

在这种情况下,您需要检查移动事件中的偏移值,并在达到该目标值时触发自定义事件。

+0

好吧,如果你在谈论的onmove事件,只适用于IE浏览器,这将是完美的。 – zero

+0

我正在谈论你现有的移动功能,'功能移动(e){'这在铬中工作得很好。 –

+0

我将如何去创建自定义侦听器?因为我所做的每个搜索都只是手动触发的返回自定义事件。 – zero