2010-01-28 6 views
1

Je semble être en train de dépanner un conflit d'espace de noms de la fonction $(). J'utilise valider 1.4. J'ai essayé pour utiliser la méthode noConflict() de jQuery, mais il me manque toujours quelque chose.Utilisation de jQuery noConflict avec les outils flowplayer

<link href="/c/jq/ui.all.css" rel="stylesheet" type="text/css" /> 
<script src="http://cdn.jquerytools.org/1.1.2/full/ 
jquery.tools.min.js" type="text/javascript"></script> 
<script src="/js/jquery.ui.core.js" type="text/javascript"></script> 
<script src="/js/jquery.ui.tabs.js" type="text/javascript"></script> 
<script src="/js/jquery.ui.accordion.js" type="text/javascript"></ 
script> 
<script type="text/javascript"> 
    /* <![CDATA[ */ 
     var $j = jQuery.noConflict(); 
    /* ]]> */ 
</script> 
<script src="/js/cilp.js" type="text/javascript"></script> 
<script src="/js/jquery.validate.js" type="text/javascript"></script> 
<script src="/js/cilp/validate.js" type="text/javascript"></script> 

if i comment out the last two external references (the validate files) 
all is well. here is the validate.js file: 

$j(function($) { 
    $j.extend($.validator.messages, { 
     required: 'Required' 
    }); 

    $j('#qotw-form').validate({ 
     rules: { 
      'qotw-options': 'required' 
     }, 

     submitHandler: function() { 
      var answer = $j("input[name='qotw-options']:checked").val(); 
      var correct = answer == 'c' ? true : false; 
      var res = correct ? 'Correct!' : 'Try again!'; 
      $j('#qotw-answer').html(res); 
     }, 

     focusCleanup: true 

     //, debug: true 
    }); 

}); 

J'espère que je fais quelque chose de stupide. Je souhaite juste que je connaissais un moyen facile à namespace un plugin donné pour éviter ce problème. merci pour toute aide!

Répondre

2

Vous n'êtes pas de passage dans la valeur de $ à $j(function($) {

Vous devez avoir quelque chose comme:

$j(function($,$j) { 
    $j.extend($.validator.messages, { 
     required: 'Required' 
    }); 
[...] 

})($,$j); 

Sinon, le $ vous passez sera toujours défini. En supposant, vous passez dans le flowplayer $ autrement, passez dans la $j et changer la variable interne à $j

0

Je ne l'ai pas fait beaucoup avec noConflict, mais ne devrait pas ceci:

$j.extend($.validator.messages, { 

être

$j.extend($j.validator.messages, {