2010-10-08 4 views
1

Si quelqu'un pouvait aider avec un problème de jscript, je serais très reconnaissant! J'ai deux scripts pour les différentes sections de la page que je mets dans la tête, mais sont en conflit sur la même page et ne peuvent tout simplement pas les amener à travailler ensemble. Les deux sont les suivantes:Javascript Conflit avec 2 scripts - Besoin d'aide!

<script type="text/javascript"> 
jQuery.noConflict(); 
function updatesubcat() { 
    $category = $('topcat').options[$('topcat').selectedIndex].value; 
    if ($category.match(' redir')) { 
    jQuery('#subcategory').html(''); 
    window.location.href='/<%=server.HTMLEncode(Session("PublicFranchiseName"))%>/' + $category.replace(' redir','') + '.html'; 
    } { 
    PagetoDiv("/ajax/home_subcategory.asp?c="+$category,"subcategory"); 
    } 
} 
</script> 


**AND:** 


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

//Execute the slideShow, set 4 seconds for each images 
slideShow(4000); 

}); 

function slideShow(speed) { 


//append a LI item to the UL list for displaying caption 
$('ul.slideshow').append('<li id="slideshow-caption" class="caption"><div class="slideshow-caption-container"><h3></h3><p></p></div></li>'); 

//Set the opacity of all images to 0 
$('ul.slideshow li').css({opacity: 0.0}); 

//Get the first image and display it (set it to full opacity) 
$('ul.slideshow li:first').css({opacity: 1.0}); 

//Get the caption of the first image from REL attribute and display it 
$('#slideshow-caption h3').html($('ul.slideshow a:first').find('img').attr('title')); 
$('#slideshow-caption p').html($('ul.slideshow a:first').find('img').attr('alt')); 

//Display the caption 
$('#slideshow-caption').css({opacity: 0.7, bottom:0}); 

//Call the gallery function to run the slideshow 
var timer = setInterval('gallery()',speed); 

//pause the slideshow on mouse over 
$('ul.slideshow').hover(
    function() { 
    clearInterval(timer); 
    }, 
    function() { 
    timer = setInterval('gallery()',speed); 
    } 
); 

} 

function gallery() { 


//if no IMGs have the show class, grab the first image 
var current = ($('ul.slideshow li.show')? $('ul.slideshow li.show') : $('#ul.slideshow li:first')); 

//Get next image, if it reached the end of the slideshow, rotate it back to the first image 
var next = ((current.next().length) ? ((current.next().attr('id') == 'slideshow-caption')? $('ul.slideshow li:first') :current.next()) : $('ul.slideshow li:first')); 

//Get next image caption 
var title = next.find('img').attr('title'); 
var desc = next.find('img').attr('alt'); 

//Set the fade in effect for the next image, show class has higher z-index 
next.css({opacity: 0.0}).addClass('show').animate({opacity: 1.0}, 1000); 

//Hide the caption first, and then set and display the caption 
$('#slideshow-caption').slideToggle(300, function() { 
    $('#slideshow-caption h3').html(title); 
    $('#slideshow-caption p').html(desc); 
    $('#slideshow-caption').slideToggle(500); 
}); 

//Hide the current image 
current.animate({opacity: 0.0}, 1000).removeClass('show'); 

} 
</script> 

Cet éditeur ne permet pas les balises de script - mais ils sont placés évidemment en haut et en bas de chaque script

Toute aide très appréciée! Merci,

Répondre

0

Si vous utilisez jQuery.noConflict(); (comme je sais) Vous devez utiliser jQuery() au lieu de ($)

ou

jQuery(document).ready(function($) { 
    $(selectors).actions 
} 
+0

Salut - merci beaucoup pour votre réponse. – sue

+0

Pourrais-je vous empêcher de coller le code d'énitre pour le script qui doit être modifié avec la partie marquée en gras? Pour la deuxième option je le prends, je dois l'ajouter au deuxième script - mais si je l'avais en entier comme il se doit (souligné où changer), cela aiderait vraiment et assurerait que je fixe exactement comment il devrait être. Merci beaucoup! poursuivre en justice – sue

0

Le $ est une variable qui fait référence à l'objet jQuery. Je suppose que les autres scripts sur la page utilisent également le $ pour une variable et ceci est à l'origine du problème. Vous devez utiliser la méthode jQuery.noConflict(), mais vous devez l'affecter à une variable que vous allez remplacer dans votre code.

var jq = jQuery.noConflict(); 

Cela va changer votre utilisation de:

$category = $('topcat').options[$('topcat').selectedIndex].value; 

à quelque chose comme ceci:

$category = jq('topcat').options[$('topcat').selectedIndex].value; 

Vous ne devez pas utiliser jq comme je l'ai fait, toute variable devrait faire la tour. J'espère que cela t'aides.