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
@Marcel все още няма доказателство след три минути? - 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
Така че задържането на мишката не е толкова добро/ефективно, колкото mouseover или mouseenter, когато се опитвате да преобърнете елемента? - 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