さまざまな理由により、プロジェクトのこの部分では jQuery を使用できません。SOバニラjsでこれを検出する必要があります。私はこれを試しましたが、うまくいきません:
var myDiv = document.getElementById('foo');
myDiv.onmouseenter = function() {
alert('entered');
}
myDiv.onmouseleave = function() {
alert('left');
}
さまざまな理由により、プロジェクトのこの部分では jQuery を使用できません。SOバニラjsでこれを検出する必要があります。私はこれを試しましたが、うまくいきません:
var myDiv = document.getElementById('foo');
myDiv.onmouseenter = function() {
alert('entered');
}
myDiv.onmouseleave = function() {
alert('left');
}
myDiv.onmouseover = function(event) {
if (this != event.currentTarget) { return false; }
// mouse enter ...
}
myDiv.onmouseout = function(event) {
if (this != event.currentTarget) { return false; }
// mouse leave ...
}
mouseenter
およびイベントはInternetExplorer独自のmouseleave
ものであるため、IEを使用していない場合、それらは機能しません。代わりにmouseover
とを使用してください。mouseout
ちなみに、jQueryは非IEブラウザーでこれらのイベントをシミュレートするため、jQuerymouseenter
を介して使用できます。シミュレーションの方法と自分自身のためのヒントについては、この記事mouseleave
を参照してください。mouseenter
mouseleave
mouseenter
とmouseleave
は独自のMSイベントです(実際にはかなりいいです)。myDiv
子がない場合、 mouseover
/mouseout
を使用してもまったく同じ効果があります。
注:この元の質問と回答は非常に古く、IE以外では十分にサポートされていませんでしたmouseenter
。mouseleave
最近のすべてのブラウザは、かなり前から要素でこれらのイベントをサポートしてきました。後者は、要素自体に加えてイベントリスナーを使用して要素の子ごとにトリガーされるため、通常はmouseover
/よりも優先されます。mouseout
あなたは近くにいます。関数名はonmouseoverとonmouseoutです。
var myDiv = document.getElementById('foo');
myDiv.onmouseover = function() {
alert('entered');
}
myDiv.onmouseout = function() {
alert('left');
}
試してください:var myDiv = document.getElementById('foo');
myDiv.onmouseover = function() {
alert('entered');
}
myDiv.onmouseout = function() {
alert('left');
}
onmouseenterとonmouseleaveはIEのみの機能です。