Javascript jQuery活动函数的原型等价物
我需要将事件侦听器绑定到给定css选择器创建的所有Dynamicly元素 在jQuery中,这将是Javascript jQuery活动函数的原型等价物,javascript,jquery,events,prototypejs,Javascript,Jquery,Events,Prototypejs,我需要将事件侦听器绑定到给定css选择器创建的所有Dynamicly元素 在jQuery中,这将是 $(".foo").live("click", function(e) { // bar }); 在原型中是否有类似的功能?这通常是通过事件#findElement完成的: document.observe('click', function(e, el) { if (el = e.findElement('.foo')) { // there's your `el`
$(".foo").live("click", function(e) {
// bar
});
在原型中是否有类似的功能?这通常是通过
事件#findElement
完成的:
document.observe('click', function(e, el) {
if (el = e.findElement('.foo')) {
// there's your `el`
// might want to stop event at this point - e.stop()
}
});
问题的正确答案如下: Prototype中jQuery
.live()
的等价物是Event.on()方法:
在回调中,this关键字将始终引用原始元素(在本例中为文档)。最优秀。谢谢!我找到的文档提到只允许标记名,而不允许CSS选择器。然而,查看原型源代码确实可以确认CSS选择器确实是被允许的。这会绑定到文档单击并查找事件,而我认为jQuery会在DOM更改时触发,并将事件绑定到新元素。有可能jQuery在幕后做了类似的事情,但从jQuery 1.4开始,它支持hover之类的事件,所以我想它不再在幕后做类似的事情了,即使它曾经做过。@altCognito,不,这是自从引入了
live
之后,jQuery如何在后台进行实时绑定的。jQuery可以将处理程序绑定到document
,以处理非本机传播的事件,因为jQuery将手动创建和传播此类事件。@Slomojo这不是语法错误el
需要分配,而不是与:)抱歉,还原,在这种情况下,我不明白您是如何确定单击的元素就是您要查找的元素。我确实认为链接的示例是错误的。没有文档。在(…)
上,您必须以相同的方式使用事件。在(文档…)
上。@clockworkgreek,是的。如果它不存在,我就不会写它。@robert,对不起。我正在检查,但没有列出,当在控制台中检查时,它返回未定义的
。原来Prototype 1.7的站点正在运行Prototype 1.6!我必须找到它的定义。
var handler = document.on(
'click',
'div[id^="post-"] .attached-post-thumbnail',
function(event, element) {
console.log(this);
console.log(element);
}.bind(this)
);
handler.stop();
handler.start();