http://jsfiddle.net/cgWdF/3/を参照してください
最新のOperaを除くすべてのブラウザ*で正常に動作します。
*IE9以下ではテストされていません
指定する必要があります。trueまたはfalseを返す必要があります。イベントのバインドには使用していません。
http://jsfiddle.net/cgWdF/3/を参照してください
最新のOperaを除くすべてのブラウザ*で正常に動作します。
*IE9以下ではテストされていません
指定する必要があります。trueまたはfalseを返す必要があります。イベントのバインドには使用していません。
jQueryはOpera12で.hover
動作します。
var $sample = $("#sample");
$sample.hover(function() {
$sample.css("background", "yellow");
}, function() {
$sample.css("background", "");
});
または、.data
ホバーされたステータスを保存してそれに対してテストするために使用します(元のフィドルと同様):
var $sample = $("#sample");
$sample.hover(function() {
$(this).data('hovering', true);
}, function() {
$(this).data('hovering', false);
});
setInterval(function(){
var $sample = $("#sample");
if($sample.data('hovering')) {
$sample.css("background", "yellow");
}
else {
$sample.css("background", "");
}
}, 200);
.mouseover()と.mouseout()を使用して、同じ効果を得ることができます。また、アニメーションの遅延が必要な場合は、jQuery UIで.animate()を使用できます。
$('#sample').mouseover(
function() {
$(this).stop().animate({
backgroundColor: "yellow"}, 200);
});
$('#sample').mouseout(
function() {
$(this).stop().animate({
backgroundColor: "#aaa"}, 200);
});
jQuery 1.9.1の時点で、他のブラウザはOperaに追いついており、現在はOperaでも機能していません。あなたのフィドルによって調査されたように、「それ」は.is( ":hover")です。
.is( ":hover")の回避策を作成しました。フィドルhttp://jsfiddle.net/mathheadinclouds/BxL4w/を参照してください。
function mouseIsOver(what){
return $(what).is(":hover");
}
function mouseIsOverWorkaround(what){
var temp = $(what).parent().find(":hover");
return temp.length == 1 && temp[0] == what;
}
function mo(what){
return document.getElementById("workaround").checked ? mouseIsOverWorkaround(what) : mouseIsOver(what);
}
setInterval(function(){
var theBox = $("#theBox");
if(mo(theBox[0])) {
theBox.css("background", "yellow");
} else {
theBox.css("background", "");
}
}, 200);
とhtml
<input type="checkbox" id="workaround"/>
<div id="theBox"></div>