2009-12-16 5 views
0

Может кто-то мне помочь с этимjQuery stop mouseover событие после события клика

Я пытаюсь установить другой цвет для элемента из события click.

Проблема в том, что событие mouseover делает все снова белым. Таким образом, я никогда не получу, чтобы увидеть цвет с активного (actief) класса.

Что мне делать, я уже пытаюсь положить в линию stopevent распространение() ??

спасибо, Ричард

$("#tbestel_opties2 span").live("mouseover", function() { 
      $t=$(this); 
      if(!$t.hasClass('actief')){ 

       $t.css({'color':'#fff','backgroundColor':'#fdc601'}); 
      } 
     }); 
     $("#tbestel_opties2 span").live("mouseout", function() { 
       $t=$(this); 
       if(!$t.hasClass('actief')){ 
       $t.css({'color':'#333','backgroundColor':'#fdc601'});                   } 
     }); 

     $("#tbestel_opties input,#tbestel_opties2 span").live("click", function(e) 
     {e.stopPropagation(); 
      $t=$(this); 
       $('#tbestel_opties2 .actief').removeClass("actief").css({'color':'#333'}); 

      $t.addClass("actief") 

      $("#opties li:eq(0)").addClass("actief"); 


    }); 

ответ

1

Используйте класс вместо этого. Когда элемент щелкнут, добавьте еще один класс к элементу. Убедитесь, что этот класс не установлен, прежде чем делать что-либо в поиске/выводе. Это также имеет то преимущество, что вы можете перемещать стиль щелкнутых элементов в свой CSS, если хотите.

+0

Спасибо, просто используйте addClass и НЕ css(). Я попробую это. Хотя я не понимаю, почему hasClass не работал? – Richard

1

Эта функция прекращения распространения останавливает поведение события по умолчанию и не влияет на наведение мыши.

Изменение использования css-селектора функции addClass, которая соответствует этим изменениям CSS, вы сможете получить порядок событий, которые вы ищете.

+0

Похоже, что Темный Сокол избил меня на занятия по классам;) – Aaron

+0

Иногда бывает неприятно печатать ответ, а затем видно, что кто-то отправил тот же самый ответ всего за несколько секунд до этого. :) –

1

попробовать это в вашем случае наведения мыши:

var currentColor = $(this).css("background-color"); 
jQuery.data($(this).get(0), "basecolor", currentColor); 

он хранит метаданные с элементом. вы могли бы прочитать это значение в случае щелчка

var currentColor = jQuery.data($(this).get(0), "basecolor"); 
1

Не дождь на параде JQuery, но почему бы не просто использовать: парить класс псевдо?

+0

У меня есть новые элементы, зависание не работает с живым. – Richard

+1

Кажется, вы серьезно задумываетесь над вещами. Я не имел в виду добавить класс hover с Jquery, я имел в виду добавить элемент с классом и иметь .class: hover, определенный в ваших таблицах стилей ... Вы используете javascript, чтобы изобретать колесо. –

+0

: зависание не поддерживается ничем, кроме тега 'a' в IE6. Если он потребует, что теперь я могу с благодарностью рассмотреть устаревшую поддержку, ваше решение не будет работать, поскольку кажется, что он нацеливается на тег span. – Aaron

Смежные вопросы