2013-06-13 2 views
-4

내 페이지에 다음과 같은 코드가 있습니다. 페이지 리로드 후에도 제대로 작동하지만 리로드하지 않으면이 스크립트가 의도 한대로 작동하지 않습니다.이상한 자바 스크립트 동작

1 차 사용 : 매우 양호한 결과
2 차 사용 : 1 클래스 이상으로 점프하는 이유는 무엇입니까?
세 번째 사용 : 클래스가 두 개 이상 뛰어납니다.

페이지를 새로 고치거나 필요한 작업을 새로 고치는 방법은 무엇입니까?

$(document).ready(function(){ 

$('.partImg').each(function(){ 
     $(this).click(function(){ 
      $("#hideMod, #visMod, #nextP, #closeP, #prevP").fadeIn(400); 
      $(this).next().addClass("ASert"); 
      var AV = $(".ASert").text(); 
      $('#visMod').html("<img src='" + AV + "'/>"); 

      $("#nextP").click(function(){ 
       if ($('.hidePart:last').hasClass("ASert")) { 
        $('.hidePart:first').addClass("ASert"); 
        $('.ASert').last().removeClass("ASert"); 
       } else {   
        $('.ASert').next().next().addClass("ASert"); 
        $('.ASert').first().removeClass("ASert"); 
       } 
       var AV = $(".ASert").text(); 
       $('#visMod').html("<img src='" + AV + "'/>"); 
      }); 

      $("#prevP").click(function(){ 
       if ($('.hidePart:first').hasClass("ASert")) { 
        $('.hidePart:last').addClass("ASert"); 
        $('.ASert').first().removeClass("ASert");   
       } else {   
        $('.ASert').prev().prev().addClass("ASert"); 
        $('.ASert').last().removeClass("ASert");   
       } 
       var AV = $(".ASert").text(); 
       $('#visMod').html("<img src='" + AV + "'/>"); 
      });   

      $("#closeP").click(function(){ 
       $("#hideMod, #visMod, #nextP, #closeP, #prevP").fadeOut(200); 
       $(".ASert").removeClass("ASert"); 
      }); 
     }); 
    }); 
}); 

http://istyle.kz/test/index.php?id=32 여기에서 질문의 요지를 볼 수 있습니다. 모든 이미지에

  1. 를 클릭하고 이미지를 다시 다음
  2. 닫기 라이트에게/
  3. 클릭을 전하려고이 자바 스크립트 꽤 일반적인 문제입니다
+1

귀하의 질문은 이해하기가 매우 어렵습니다. 1) 들여 쓰기를 시도하지 않고 큰 벽의 텍스트를 읽을 수 있도록 2) 실제 문제에 대한 설명이 거의 없거나 전혀 없음 3) 문제를 재현하는 방법에 대한 정보가 없습니다. – Jamiec

+1

코드를 들여 쓰면 다른 사람들이 코드를 읽을 수 있습니다. .click (function() {...})을 .on ('click', function() {...})으로 바꿔보십시오. 누구든지 이해할 수 있도록 HTML을 포함시켜야한다고 생각합니다. 당신이하려는 일. – Ringo

+0

Ive가 코드를 제대로 들여 쓰기 위해 시도했지만, 문제의 애매 모호함과 문제를 재현하는 데 필요한 정보 부족으로 인해 괜찮은 답변을 얻을 수 있을지는 의문입니다. – Jamiec

답변

0

다음/이전하려고합니다. 내부 클릭 핸들러는 다른 클릭 핸들러를 바인딩합니다. 이것이 필요한 경우 언 바인딩은 어딘가에서 수행되어야합니다.

그러나 필요하지는 않습니다. 그래서 코드를 이렇게 리팩터링하는 것이 좋습니다 :

$(function(){ 
    $("#nextP").on("click", function(){ 
     //... 
    }); 
    $("#prevP").on("click", function(){ 
     //... 
    }); 
    $("#closeP").on("click", function(){ 
     //... 
    }); 
    $('.partImg').on("click", function(){ 
     $("#hideMod, #visMod, #nextP, #closeP, #prevP").fadeIn(400); 
     //... 
    }); 
}); 

희망이 도움이됩니다.

+0

고맙습니다. 이제 작동합니다. – user2298672

관련 문제