2012-08-09 5 views
-2

저희 회사는 디자인 에이전시에서 제작 한 웹 사이트를 운영하고 있습니다. 그들은 사용자 지정 CMS를 사용하기 때문에 사이트의 원시 코드로 들어가기가 매우 어렵습니다. 저는 이미지 슬라이더로 특정 버그를 잡으려고했습니다. 슬라이더의 네비게이션 버튼을 클릭하면 이미지 슬라이더가있는 버그

http://informedfamilies.org/

는 ("1,2,3,4,5")는, 상기 슬라이드는 적절한 이미지로 전환하지만 처음. 다른 단추를 두 번 클릭하면 슬라이더가 변경되지 않습니다. 이미지 아래의 그림자가 더 어둡게 보입니다. 따라서 이미지가 사라지지 않고 단순히 주 이미지 아래에 스태킹된다는 가정하에 진행됩니다.

이 문제를 해결하는 데 도움을 주시면 큰 도움이 될 것입니다.

관련 코드는 :

$('#home_features .listeditem').wrapAll('<div id="fade" />'); 
$('#fade').css('background', 'transparent'); 

var featureCt = $('#fade .listeditem').length; 
if (featureCt > 1) { 
    $('#home_features').each(function() { 
     var controlDiv = $('<div />').attr('id', 'switcher'); 
     for (var i = 1; i <= featureCt; i++) { 
      var control = $('<a href="#" class="selector" id="s' + i + '">' + i + '</a>'); 
      if (i == 1) control.addClass('selected first'); 
      if (i == featureCt) control.addClass('last'); 
      controlDiv.append(control); 
     } 
     $(this).append(controlDiv); 
     controlDiv.append('<a href="#" class="selector" id="stop">||</a>'); 
     controlDiv.append('<a href="#" class="selector" id="start" style="display: none;">&#9654;</a>'); 
    }); 
} 
$("#fade").innerfade({ 
    speed: 2000, 
    timeout: 5000, 
    containerheight: 440, 
    tracker: "switcher", 
    trackerclass: "selected", 
    repeat: 1 
});  
$(".selector").click(function() { 
    if (this.id == "stop" || this.id == "start") { 
     return; 
    } 

    if($("#fade").data("timer")) { 
     clearTimeout($("#fade").data("timer")); 
     $("#fade").removeData("timer"); 
     $("#stop").hide(); 
     $("#start").show(); 
    } 

    var id = Number(this.id.substr(1)); 
    $(".selector").removeClass("selected"); 
    $(this).addClass("selected"); 

    $("#fade>div:visible").fadeOut(1); 
    $("#fade>div.item" + id).fadeIn(1, function() { 
     $('body').removeMatchedClasses({ pattern: /^slide/ }); 
     $('body').addClass('slide' + (id - 1)); 
    }); 

    var num = $("#fade").data("num_elements"); 
    if (id < num) { 
     $("#fade").data("next", id); 
    } else { 
     $("#fade").data("next", 0); 
    } 
    return false; 
}); 
$("#stop").click(function() { 
    clearTimeout($("#fade").data("timer")); 
    $("#fade").removeData("timer"); 
    $("#stop").hide(); 
    $("#start").show(); 
    return false; 
}); 
$("#start").click(function() { 
    $("#start").hide(); 
    $("#stop").show(); 
    $(".selector").removeClass("selected"); 
    $("#fade").innerfade({ 
     speed: 2000, 
     timeout: 10000, 
     containerheight: 440, 
     tracker: "switcher", 
     trackerclass: "selected" 
    }); 
    var id = $("#fade").data("next"); 
    $("#s" + id).addClass("selected"); 
    return false; 
}); 
+0

코드가 없으면 "너무 어렵다." 코드의 작은 스 니펫으로 알아낼 수있는 것을 이해하기 위해 방화 광을 사용해야합니다. – DonCallisto

+0

@DonCallisto relavant 코드를 추가했습니다. 실수로 죄송합니다! – user1587724

+0

내 FF가 여기에서 문제를 발견했습니다 : $ ('body'). removeMatchedClasses ({pattern :/^ slide /}); – Steen

답변

0

슬라이더 방법 site.js. 라인 37 인스턴스화

Uncaught TypeError: Object [object Object] has no method 'removeMatchedClasses' 

removeMatchedClasses에 대한 함수 선언이 없습니다 : 셀렉터의 각 클릭 할 때 라인 (81)에, 나는 다음과 같은 오류를보고 있어요. 그것은 단순히 존재하지 않습니다.

body에서 정규 표현식 /^slide/과 일치하는 클래스를 제거하려고합니다.

내 포인트는 다음과 라인 (81)을 대체하는 것입니다 :

$('body').removeClass(function(i, c) { 
    return c.match(/^slide/).join(" "); 
}); 

이 당신을 위해 작동하는 방법을 알려주세요.

+0

이전과 달리 때로는 슬라이드를 전환 할 수 있기 때문에 문제가 개선 된 것으로 보입니다. 나는 전환을하는 방식이 'display : none;'을 설정하는 대신 슬라이드의 Z- 색인을 수정하는 방법임을 알아 냈습니다. 또한 내가 알아챈 또 다른 문제점은 슬라이드로 전환하면 의도 한 회전이 멈추지 만, 내가 클릭하면 재생이 사라진다는 것입니다. 당신의 도움을 주셔서 감사합니다! – user1587724