2011-01-01 15 views
1

Ich habe diese jQuery-Skripte in meinem HTML und sie arbeiten sehr gut ...Konflikt mit jQuery Skripte

<script type="text/javascript"> 
     $(function() { 
     $('#iphone').crossSlide({ 
      sleep: 2, 
      fade: 1 
     }, [ 
      { src: 'images/screen1.png' }, 
      { src: 'images/screen2.png' }, 
      { src: 'images/screen3.png' } 
     ]) 
     }); 
    </script> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
     $('#features').hide(); 
     $('#more_features').click(function() { 
      $('#features').slideToggle(500); 
      return false; 
     }); 
    }); 
    </script> 

    <script type="text/javascript"> 
    $('a.toTop').click(function() { 
     $('html, body').animate({scrollTop: '0px'}, 500); 
     return false; 
    }); 
    </script> 

    <script type="text/javascript"> 
    $(function() { 
     $('a.contactLink').click(function() { 
      $('html, body').animate({scrollTop: '0px'}, 100); 
      $('#risposta').hide(); 
      $('#formName').val(''); 
      $('#formEmail').val(''); 
      $('#formSubject').val(''); 
      $('#formMessage').val(''); 
      $('#mask').show().fadeTo('', 0.7); 
      $('#contact').fadeIn(); 
      return false; 
     }); 
     $('#mask').click(function() { 
      $('#mask, #contact').stop().fadeOut('slow'); 
     }); 
    }); 
    </script> 

    <script type="text/javascript"> 
    $(function() { 
     $('a.newsletterLink').click(function() { 
      $('html, body').animate({scrollTop: '0px'}, 100); 
      $('#mce-responses').hide(); 
      $('#mce-NAME').val(''); 
      $('#mce-EMAIL').val(''); 
      $('#mask').show().fadeTo('', 0.7); 
      $('#mc_embed_signup').fadeIn(); 
      return false; 
     }); 
     $('#mask').click(function() { 
      $('#mask, #mc_embed_signup').stop().fadeOut('slow'); 
     }); 
    }); 
    </script> 

    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#formSend").click(function(){ 

      var valid = ''; 
      var name = $("#formName").val(); 
      var mail = $("#formEmail").val(); 
      var subject = $("#formSubject").val(); 
      var messaggio = $("#formMessage").val(); 

      if (name.length<1) { 
       valid += '<span>Please, fill name field.</span><br />'; 
      } 
      if (!mail.match(/^([a-z0-9._-][email protected][a-z0-9._-]+\.[a-z]{2,4}$)/i)) { 
       valid += '<span>Please, enter a valid email address.</span><br />'; 
      } 
      if (subject.length<1) { 
       valid += '<span>Please, fill subject field.</span><br />'; 
      } 

      if (valid!='') { 
       $("#risposta").fadeIn("slow"); 
       $("#risposta").html("<span><b>Error:</b></span><br />"+valid); 
       $("#risposta").css("background-color","#ffc0c0"); 
      } 
      else { 
       var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&messaggio=' + encodeURIComponent(messaggio); 
       $("#risposta").css("display", "block"); 
       $("#risposta").css("background-color","#FFFFA0"); 
       $("#risposta").html("<span>Sending message...</span>"); 
       $("#risposta").fadeIn("slow"); 
       setTimeout("send('"+datastr+"')",2000); 
      } 
      return false; 
     }); 
    }); 
    function send(datastr){ 
     $.ajax({  
      type: "POST", 
      url: "contactForm.php", 
      data: datastr, 
      cache: false, 
      success: function(html) { 
      $("#risposta").fadeIn("slow"); 
      $("#risposta").html('<span>Message successfully sent!</span>'); 
      $("#risposta").css("background-color","#e1ffc0"); 
      setTimeout('$("#risposta").fadeOut("slow")',2000); 
      } 
     }); 
    } 
    </script> 

Jetzt habe ich einen Newsletter Formular, das Mailchimp Dienst nutzt. Um es zu verwenden, muss ich ein jQuery-Skript verwenden, aber wenn ich es in den HTML-Code einfüge, funktionieren andere Skripte nicht! In <head></head> Tags habe ich diese Skripte:

<script src="jquery-1.4.4.min.js" type="text/javascript"></script> 
    <script src="jquery.cross-slide.min.js" type="text/javascript"></script> 
    <script src="http://downloads.mailchimp.com/js/jquery.validate.js" type="text/javascript"></script> 
    <script src="http://downloads.mailchimp.com/js/jquery.form.js" type="text/javascript"</script> 
<!-- Using a newer version 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> --> 

Schließlich ist diese für den Newsletter jQuery Skript ist (ich muss dies nicht ändern!):

<script type="text/javascript"> 
    var fnames = new Array();var ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='NAME';ftypes[1]='text';var err_style = ''; 
    try{ 
     err_style = mc_custom_error_style; 
    } catch(e){ 
     err_style = ''; 
    } 
    var mce_jQuery = jQuery.noConflict(true); 
    mce_jQuery(document).ready(function($) { 
     var options = { errorClass: 'mce_inline_error', errorElement: 'div', errorStyle: err_style, onkeyup: function(){}, onfocusout:function(){}, onblur:function(){} }; 
     var mce_validator = mce_jQuery("#mc-embedded-subscribe-form").validate(options); 
     options = { url: 'http://matthewlabs.us2.list-manage.com/subscribe/post-json?u=88d77c3091b8c0deb9fb740c6&id=2de218cbc7&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8", 
        beforeSubmit: function(){ 
         mce_jQuery('#mce_tmp_error_msg').remove(); 
         mce_jQuery('.datefield','#mc_embed_signup').each(
          function(){ 
           var txt = 'filled'; 
           var fields = new Array(); 
           var i = 0; 
           mce_jQuery(':text', this).each(
            function(){ 
             fields[i] = this; 
             i++; 
            }); 
           mce_jQuery(':hidden', this).each(
            function(){ 
             if (fields[0].value=='MM' && fields[1].value=='DD' && fields[2].value=='YYYY'){ 
              this.value = ''; 
             } else if (fields[0].value=='' && fields[1].value=='' && fields[2].value==''){ 
              this.value = ''; 
             } else { 
              this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value; 
             } 
            }); 
          }); 
         return mce_validator.form(); 
        }, 
        success: mce_success_cb 
       }; 
     mce_jQuery('#mc-embedded-subscribe-form').ajaxForm(options); 

    }); 
    function mce_success_cb(resp){ 
     mce_jQuery('#mce-success-response').hide(); 
     mce_jQuery('#mce-error-response').hide(); 
     if (resp.result=="success"){ 
      mce_jQuery('#mce-'+resp.result+'-response').show(); 
      mce_jQuery('#mce-'+resp.result+'-response').html(resp.msg); 
      mce_jQuery('#mc-embedded-subscribe-form').each(function(){ 
       this.reset(); 
      }); 
     } else { 
      var index = -1; 
      var msg; 
      try { 
       var parts = resp.msg.split(' - ',2); 
       if (parts[1]==undefined){ 
        msg = resp.msg; 
       } else { 
        i = parseInt(parts[0]); 
        if (i.toString() == parts[0]){ 
         index = parts[0]; 
         msg = parts[1]; 
        } else { 
         index = -1; 
         msg = resp.msg; 
        } 
       } 
      } catch(e){ 
       index = -1; 
       msg = resp.msg; 
      } 
      try{ 
       if (index== -1){ 
        mce_jQuery('#mce-'+resp.result+'-response').show(); 
        mce_jQuery('#mce-'+resp.result+'-response').html(msg);    
       } else { 
        err_id = 'mce_tmp_error_msg'; 
        html = '<div id="'+err_id+'" style="'+err_style+'"> '+msg+'</div>'; 

        var input_id = '#mc_embed_signup'; 
        var f = mce_jQuery(input_id); 
        if (ftypes[index]=='address'){ 
         input_id = '#mce-'+fnames[index]+'-addr1'; 
         f = mce_jQuery(input_id).parent().parent().get(0); 
        } else if (ftypes[index]=='date'){ 
         input_id = '#mce-'+fnames[index]+'-month'; 
         f = mce_jQuery(input_id).parent().parent().get(0); 
        } else { 
         input_id = '#mce-'+fnames[index]; 
         f = mce_jQuery().parent(input_id).get(0); 
        } 
        if (f){ 
         mce_jQuery(f).append(html); 
         mce_jQuery(input_id).focus(); 
        } else { 
         mce_jQuery('#mce-'+resp.result+'-response').show(); 
         mce_jQuery('#mce-'+resp.result+'-response').html(msg); 
        } 
       } 
      } catch(e){ 
       mce_jQuery('#mce-'+resp.result+'-response').show(); 
       mce_jQuery('#mce-'+resp.result+'-response').html(msg); 
      } 
     } 
    } 
    </script> 

Warum andere Skripte funktionieren nicht? Kannst du mir helfen?
Danke!

Antwort

1

löste ich dieses Problem durch diesen Verweis von <head></head> Tags löschen:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 

Auch Ich habe auch diese Codezeile in Mailchimp Skript:

var mce_jQuery = jQuery.noConflict(); 

mit diesem:

var mce_jQuery = jQuery; 

Vielen Dank an alle! ;)

+0

Schön! Obwohl ich nicht verstehe, warum das funktioniert * ohne * noConflict ... Wie auch immer, gut zu hören, es wurde behoben :) –

2

Sie können nicht zwei Versionen von jQuery auf derselben Seite verwenden. Sie müssen beide Skripte mit einer Version (vorzugsweise der neueren Version) arbeiten lassen.

Ich würde versuchen, den Verweis auf 1.2.6 zuerst zu entfernen und zu sehen, was passiert.

+0

ja, ich habe es gelöscht aber nichts ändern ... – matteodv

+0

@Matthew was sagt die Fehlerkonsole? –

1

Ich würde Firebug empfehlen, um herauszufinden, was genau der Fehler ist, der dafür verantwortlich ist, dass dies nicht funktioniert. Sobald die Fehlermeldung angezeigt wird, ist die Fehlerbehebung viel einfacher.

+0

Können Sie mir erklären, wie das geht? Danke :) – matteodv