2009-12-09 22 views
0

Les deux fonctions ci-dessous (qui sont identiques sauf quand elles doivent être exécutées) sont en $(document).ready. La version .live fonctionne comme prévu, en masquant 2 divs lorsque le sélecteur est coché et en les affichant lorsqu'il n'est pas coché. La version .ready ne fait rien mais elle est censée cacher les divs spécifiés quand la page est chargée. La case à cocher 'allday' est cochée par défaut (à des fins de test).jquery masquage fonctionne en .live et échoue en .ready

Quel est le problème avec la version .ready?

$("input[name='allday']").ready(function(){ //OnLoad verify if allday is checked to disallow time entry 
    if($(this).is(":checked")){ //There is a check 
     $("#evst").hide(); //hide time entry 
     $("#evet").hide(); 
    } else { 
     $("#evst").show(); 
     $("#evet").show(); 
    }; 
}); 

$("input[name='allday']").live("click", function(){ //OnClick verify if allday is checked to disallow time entry 
    if($(this).is(":checked")){ //There is a check 
     $("#evst").slideUp(); //hide time entry 
     $("#evet").slideUp(); 
    } else { 
     $("#evst").slideDown(); 
     $("#evet").slideDown(); 
    }; 
}); 

Répondre

3

Lorsque vous utilisez .ready $(this) ne renverra pas à l'élément droit - changer à $("input[name='allday']")

+0

si vraiment, je pouvais avoir un nu 'if ($ (« input [name = 'allday '] "). is (": checked ")) {...}' sans l'enveloppe 'selector.ready()'? – dnagirl

+0

Vous aurez toujours besoin de .ready sauf si le code vient après le '' dans la source HTML. – Greg

+0

Merci beaucoup. – dnagirl