2013-06-13 191 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