две функции jquery, которые мешают друг другу

0

У меня есть две функции jquery, которые делают что-то похожее (одно для мыши, другое на клике), и они, кажется, мешают друг другу. Первый изменяет фон, используя класс jquery ui switchclass при зависании. Это также приведет к подменю. Когда вы нажимаете на ссылку в подменю, она запускает функцию щелчка, которая удаляет предыдущее меню. и использует switchclass для изменения этого фона. Проблема заключается в том, как только вы двигаете мышью, она запускает мышь и меняет фон обратно на фоновый рисунок по умолчанию.

Это наводка.

     $('.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. он скрывает класс nav, который является частью мыши. технически я догадываюсь, что заставил вас выучить это меню, но у меня есть он добавляет класс в div sitewrapper и останавливается, если класс присутствует.

    $('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);
 }
 });
Теги:

1 ответ

0
Лучший ответ

Я понял. Функция щелчка была в порядке, так выглядит;

    $('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
 {
 $('#topId').addClass('topOn');
 $('img.logo').hide("drop", {direction: "down"}, 1000);
 $('.nav').hide("drop", {direction: "down"}, 1000);
 $('#bg img[src!="'+clickimg+'"]').switchClass("active", "inactive", 0, "easeInOutQuad");
 $('#bg img[src="'+clickimg+'"]').switchClass("inactive", "active", 0, "easeInOutQuad");
 $('#topId').show("slide", {direction:"up"}, 1000);
 }
 });

Функция hover требовала оператора if, чтобы остановить его после нажатия щелчка. Таким образом, я получил событие click, добавляя класс в div, который становится видимым с именем topOn. затем добавил оператор if, который проверяет, имеет ли этот div класс topOn. Это похоже на это;

     $('.hoverbg').mouseenter(
  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");
  });
$('.hoverbg').mouseleave
 (function(){
   if(jQuery('#topId').hasClass('topOn'))
   {
     jQuery('.hoverbg').stop();
   }
   else
   {
    $('#bg img[src="images/bg.jpg"]').switchClass("inactive", "active", 0, "easeInOutQuad");
    $('#bg img[src!="images/bg.jpg"]').switchClass("active", "inactive", 0, "easeInOutQuad");
   }
 });
  • 0
    Я могу ошибаться, параметры кликов, содержащиеся в разделе else, похоже, не меняют изображения в firefox и explorer. Любые мысли о том, почему только это не работает?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню