mouseenter
要素がイベントに追加される MooTools スクリプトがあります (理由は聞かないでください..) 。jQuery では、fancybox 内でこれらの要素を開いたり表示したりします。ユーザーがどこをクリックしてファンシーボックスを開くかによって、最終的にはカーソルがすでに要素上にあるため、ポップアップが表示されたときに最初に mouseenter イベントが発生することはありません。しかし、jQuery の mousemove イベントはそれらに対して発生します。
mooTools ファイルに mouseenter イベントをトリガーする mousemove イベントを追加することもできますが、学習のために、要素イベント関数を起動するにはどうすればよいでしょうか (そして this-reference を利用するには)? これは私にはうまくいきませんでした。
ムーツール:
$$('.foo').addEvents({
mouseenter: function(){
console.log('fired!'); // never does ):
// stuff happens here
}
});
jQuery:
$('#bar').fancybox({
onComplete: function() {
$('.foo').unbind('mousemove').mousemove(function() {
var el = this;
console.log('mousemoved');
$('.foo').unbind('mousemove');
// does not work:
(function($$) {
$$(this).fireEvent('mouseenter', $(this));
})(document.id);
// neither does this:
var event;
if (document.createEvent) {
event = document.createEvent("HTMLEvents");
event.initEvent("mousemove", true, true);
} else {
event = document.createEventObject();
event.eventType = "mousemove";
}
event.eventName = "mousemove";
event.memo = {};
if (document.createEvent) {
this.dispatchEvent(event);
}
else {
this.fireEvent("on" + event.eventType, event);
}
// whats the solution?
// something like: this.fireEvent('mouseenter', this); would be cool!
});
}
});