2013-06-13 129 views
-4

我在我的页面上有以下代码,并且在页面重新载入后它工作正常,但是没有重新载入,此脚本将无法按预期工作。奇怪的Javascript行为

第一次使用:作品不错
第二次使用:为什么它跳过1级?
第三次使用:它跳过了2级

如何刷新脚本无法重新加载页面或我需要做什么?

$(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

您应该尝试缩进您的代码,以便其他人可以阅读它。你可以尝试用.on('click',function(){...})替换所有的.click(function(){...}) 我认为你必须包含html以供任何人理解你在做什么。 – Ringo

+0

我试图正确地缩进代码,但由于问题的模糊性以及缺乏重新解决问题所需的信息,我怀疑你会得到任何正确的答案。 – Jamiec

回答

0

这是用JavaScript很常见的问题。在点击处理程序中您绑定了另一个点击处理程如果这是必要的,解除绑定应该在某个地方执行。

然而,似乎并不需要。所以,我会建议这样重构代码:

$(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