gpt4 book ai didi

prototypejs - 原型(prototype)中的 jQuery Live 实现

转载 作者:行者123 更新时间:2023-12-01 01:53:22 25 4
gpt4 key购买 nike

Element.implement({
addLiveEvent: function(event, selector, fn){
this.addEvent(event, function(e){
var t = $(e.target);

if (!t.match(selector)) return false;
fn.apply(t, [e]);
}.bindWithEvent(this, selector, fn));
}
});

$(document.body).addLiveEvent('click', 'a', function(e){ alert('This is a live event'); });

上面的代码是在 similar question 中完成的在 Mootools 中实现 .live 行为。我读过这个问题:Prototype equivalent for jQuery live function .

如何在原型(prototype)中实现这一点?可能可以这样实现:

document.liveobserve('click', 'a', function(e){ alert('This is a live event');

编辑以明确问题。

最佳答案

最简单(也许不是最快或最好)的方法似乎是这样的:

Element.live = function(evType, evSelector, evBlock) {
var mySelector = evSelector;
var myBlock = evBlock;
this.observe(evType, function(ev) {
if (ev.target.match(mySelector)) {
evBlock(ev);
}
});
};

参数 evSelector 和 evBlock 被分配给局部变量,因此它们可供事件处理程序使用(这是一个闭包)。传递的 block evBlock 会像普通的 Prototype 事件处理程序一样传递事件对象。

应该注意的是,这将处理“evType”类型的每个事件,因此如果它是 mouseMove/mouseOver,这将使您的页面变慢。另外,FireBug 可能会因为需要单步执行的事件数量而进入休眠状态。

编辑:根据评论进行更改

关于prototypejs - 原型(prototype)中的 jQuery Live 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com