JQuery'nin tetikleme işlevinde olduğu gibi Prototip'te bir olayı tetiklemek için bir yöntem bilen var mı?Prototip ile bir olay tetikleme
Bir olay dinleyicisini gözlem yöntemini kullanarak bağladım, ancak olayı programlı olarak da tetikleyebilirim.
JQuery'nin tetikleme işlevinde olduğu gibi Prototip'te bir olayı tetiklemek için bir yöntem bilen var mı?Prototip ile bir olay tetikleme
Bir olay dinleyicisini gözlem yöntemini kullanarak bağladım, ancak olayı programlı olarak da tetikleyebilirim.
event.simulate.js
ihtiyaçlarınıza uygun önceden
teşekkürler.
Bunu birkaç kez kullandım ve çekicilik gibi çalışıyor. elle böyle tıklama olarak yerli olayları tetiklemek ya da öylesine gibi seyretmeye O yapmanızı sağlar:
$('foo').simulate('click');
Bu konuda çok şey bütün ekli olay işleyicileri hala sanki tıkladığınız olurdu, idam edilecek olması kendin eleman.
Özel olaylar için standart prototip yöntemini Event.fire()
kullanabilirsiniz.
Tam olarak ne aradığımı, çok teşekkürler –
Freakin 'parlak! Bu bana çok yardımcı oldu. Teşekkürler :) – CalebHC
Çok güzel bir arayüz. Bununla birlikte, '.simulate' yönteminin Prototype.js'ye doğal olarak gitmesini istiyorum :) –
Ben Prototip için yerleşik bir tane sanmıyorum, ama bu (test edilmedi ama en azından doğru yönde almalısınız) kullanabilirsiniz:
Element.prototype.triggerEvent = function(eventName)
{
if (document.createEvent)
{
var evt = document.createEvent('HTMLEvents');
evt.initEvent(eventName, true, true);
return this.dispatchEvent(evt);
}
if (this.fireEvent)
return this.fireEvent('on' + eventName);
}
$('foo').triggerEvent('mouseover');
$ ('foo') demek istediniz triggerEvent ('mouseover')? –
Greg'in cevabı benim için çalışıyor, ancak '$ (' foo ') olmalı, triggerEvent (' mouseover '); '' $ (' foo ') yerine, fireEvent (' mouseover '); 'ps. üzgünüm burada yeni ve zaten var olan bir cevap nasıl alıntı ya da yorum yapmak için bilmiyorum ... thx – thyagx
Prototip yolu; çok hoş! – quickshiftin
Ben bu mesajı faydalı buldu. Her iki Firefox ve IE'de olayları tetiklemenin bir yolunu içerir. Burada
function fireEvent(element,event){
if (document.createEventObject){
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent('on'+event,evt)
}
else{
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
}
}
cevaplar "Normal" olayları için geçerliyse, o İstemcisi tarafından tanımlanan olaylar olmakla birlikte, özel etkinlikler için size prototipin "ateş" yöntemi kullanmalısınız. Örneğin.
$('something').observe('my:custom', function() { alert('Custom'); });
.
.
$('something').fire('my:custom'); // This will cause the alert to display
Cevabıma bir bakın. Orada prototip bir destek var ... –