addClass работает только внутри функции .click?

Я пытаюсь добавить класс, когда элемент щелкнут, затем я хотел бы использовать этот элемент класса для выполнения определенного действия (например, предупреждения)

но похоже, что это не работает, когда я использую новый класс вне функции щелчка, здесь:

<script type="text/javascript">
    $(document).ready(function(){                      
        $(".notactive").click(function() {  
            $(this).addClass("active");      
        });

        $(".active").hover(function(){
            alert("Hello");
        }); 
    }); 
</script>

Теперь, если я помещу его в функцию щелчка, он сработает здесь:

<script type="text/javascript">
    $(document).ready(function(){             
        $(".notactive").click(function() {  
            $(this).addClass("active");
            $(".active").hover(function(){
                alert("Hello");
            });           
        });
    });
</script>

Как его использовать, когда он вне функции?


person Marcel    schedule 30.01.2013    source источник
comment
Вы действительно должны установить событие .active вне щелчка, а затем просто переключать класс .active при щелчке.   -  person Gavin    schedule 30.01.2013
comment
Используйте jsfiddle для примера кода.   -  person radu florescu    schedule 30.01.2013


Ответы (1)


Вам нужно использовать on, чтобы зарегистрировать событие для элементов, которые должны соответствовать критериям селектора для привязки события. после document.ready, так как вы добавляете класс после document.ready и привязываете событие к document.ready. В document.ready событие будет привязано к элементам в DOM, у которых активен класс.

$(document).ready(function(){

     $(".notactive").click(function() {  
          $(this).addClass("active");      
     });

     $(document).on("mouseover mouseout", ".active", function(){
          alert("rwgweg");
     }); 
});
person Adil    schedule 30.01.2013
comment
также должен быть привязан к контейнеру в DOM, а не к документу, если это возможно. Просто jQuery меньше нужно следить за изменениями. - person Kansha; 30.01.2013
comment
что выше не работает. Я поставлю это на jsfiddle через минуту - person Marcel; 30.01.2013
comment
@ Марсель все еще нет доказательств через три минуты? - person John Dvorak; 30.01.2013
comment
вот [jsfiddle][1], пожалуйста, дайте мне знать, как это исправить, ни одно из приведенных выше решений не сработало :( [1]: jsfiddle.net/erZMx - person Marcel; 30.01.2013
comment
@ Марсель, твоя скрипка не включает исправление Адила - person John Dvorak; 30.01.2013
comment
@Marcel попробуйте $(document).on("mouseover mouseout", ..., так как наведение не является событием. - person John Dvorak; 30.01.2013
comment
@ Марсель, конечно, ты можешь послушать только mouseover. - person John Dvorak; 30.01.2013
comment
Таким образом, наведение не так хорошо/эффективно, как наведение мыши или ввод мыши при попытке перевернуть элемент? - person Marcel; 30.01.2013
comment
Спасибо @JanDvorak, я не смог принять участие из-за отсутствия подключения к Интернету. - person Adil; 30.01.2013
comment
Я собираюсь опубликовать еще один вопрос для привязки и развязки. Пожалуйста, не стесняйтесь участвовать. - person Marcel; 30.01.2013
comment
@Marcel hover - это не событие. метод hover связывает два отдельных события jQuery, mouseover и mouseout. - person John Dvorak; 30.01.2013
comment
stackoverflow.com/questions/14602475 / - person Marcel; 30.01.2013