비슷한 두 가지 기능 (하나는 마우스 오버, 다른 하나는 클릭)을 수행하고 서로 간섭하는 것처럼 보이는 2 개의 jquery 기능이 있습니다. 첫 번째는 hover에서 jquery UI switchclass를 사용하여 배경을 변경합니다. 이것은 또한 하위 메뉴를 가져옵니다. 하위 메뉴에서 링크를 클릭하면 이전 메뉴를 제거하는 클릭 기능이 실행됩니다. switchclass를 사용하여 해당 배경을 변경합니다. 문제는 마우스를 움직이면 마우스 아웃이 발생하고 배경을 기본 배경으로 다시 변경하는 것입니다.두 개의 jquery 함수가 서로 간섭합니다.
이것은 마우스 오버입니다.
$('.hoverbg').mouseover(
function(){
var newimg = $(this).attr('data-bgsrc');
$('#bg img[src="'+newimg+'"]').switchClass("inactive", "active", 0, "easeInOutQuad");
$('#bg img[src!="'+newimg+'"]').switchClass("active", "inactive", 0, "easeInOutQuad");
});
$('.nav').mouseout
(function(){
if ($('#sitewrapper').hasClass("c"))
{
event.stopImmediatePropagation()
}
else
{
$('#bg img[src="images/bg.jpg"]').switchClass("inactive", "active", 0, "easeInOutQuad");
$('#bg img[src!="images/bg.jpg"]').switchClass("active", "inactive", 0, "easeInOutQuad");
}
});
여기에 click 이벤트가 있습니다. 그것은 mouseout의 일부인 nav 클래스를 숨 깁니다. 기술적으로 나는 당신이 그 메뉴의 mouseout 만들었다 고 생각하지만, 클래스에 sitewrapper div를 추가하고 클래스가 있으면 멈 춥니 다.
$('a#navclick').click(function(){
var iclick = $(this).attr('data-iclick');
var clickimg = $(this).attr('click-data-bgsrc');
if ($('#topId').hasClass('.topOn'))
{
$('#bg img[src="'+clickimg+'"]').switchClass("inactive", "active", 0, "easeInOutQuad");
$('#bg img[src!="'+clickimg+'"]').switchClass("active", "inactive", 0, "easeInOutQuad");
}
else
{
$('#sitewrapper').addClass("c");
$('img.logo').hide("drop", {direction: "down"}, 1000);
$('.nav').hide("drop", {direction: "down"}, 1000);
$('#bg img[src="'+clickimg+'"]').switchClass("inactive", "active", 0, "easeInOutQuad");
$('#bg img[src!="'+clickimg+'"]').switchClass("active", "inactive", 0, "easeInOutQuad");
$('#topId').addClass('topOn');
$('#topId').show("slide", {direction:"up"}, 1000);
}
});
틀렸을 수도 있습니다. else 섹션에 포함 된 클릭 매개 변수가 Firefox 및 탐색기에서 이미지를 변경하지 않는 것 같습니다. 왜 그게 효과가 없는지에 대한 생각은 없습니까? – dimmlight