2015-10-21 7 views
-6
<script> 
     var i=0; 
     $(document).ready(function(){ 
      $("#tolevel_" + (i+1)).click(function(){ 
       $("#level_" + i).hide(500,'swing', function(){ 
        $("#level_" +(i+1)).show(500, 'swing', function(){ 
         i=i+1; 
        }); 

       }); 
      }); 
      $("#backtolevel_" + (i-1)).click(function(){ 
       $("#level_" + i).hide(500,'swing', function(){ 
        $("#level_" +(i-1)).show(500, 'swing', function(){ 
         i=i-1; 
        }); 
       }); 
      }); 
     }); 
    </script> 

Хорошо, вот мой jquery. Идентификаторы уровня - это divs и tolevel и backtolevel - по две кнопки в каждом. например, если id div является «level_1», идентификаторы кнопок в этом div являются «backtolevel_0» и «tolevel_2». Хорошо, работает только в первый раз. это неважно, на каком уровне я. Я тестировал его на разных уровнях, но он работает только один раз. не знаю почему! Можете ли вы, ребята, помочь мне? Я думаю, что приращение или уменьшение не работают.Почему мой код jquery не работает?

+5

Вы только присоединяете обработчики событий один раз. На уровне 0. – MinusFour

+0

И как вы ожидаете, что он привяжется к следующему уровню, когда вы не измените 'i'? Нет смысла использовать 'i'. Используйте родительские и дочерние селекторы. – epascarello

+0

Что не так с использованием класса? –

ответ

2

Попробуйте с помощью следующего кода:

<script> 

     $(document).ready(function(){ 
      $("[id^=tolevel_]").click(function(){ 
       var currentID = $(this).attr("id"); 
       var number = currentID.replace("tolevel_","");//get the number in string format 
       number = parseInt(number); 
       var i = number -1; 
       $("#level_" + i).hide(500,'swing', function(){ 
        $("#level_" +(i+1)).show(500, 'swing', function(){ 

        }); 
       }); 
      }); 

      $("[id^=backtolevel_]").click(function(){ 
       var currentID = $(this).attr("id"); 
       var number = currentID.replace("backtolevel_","");//get the number in string format 
       number = parseInt(number); 
       var i = number + 1; 
       $("#level_" + i).hide(500,'swing', function(){ 
        $("#level_" +(i-1)).show(500, 'swing', function(){ 

        }); 
       }); 
      }); 
     }); 
    </script> 

Это пользователь `Атрибут JQuery начинается с селектором. Узнайте больше об этом в https://api.jquery.com/attribute-starts-with-selector/. На самом деле нет необходимости писать код для каждого элемента. Это должно сработать.

+0

Wow Спасибо, что помогли мне вместо того, чтобы опрокинуть мой вопрос, который я заменил, и он работает как шарм, но я должен изучить его как то, как он работает. понятия не имею, я изучил jquery из w3schools. Большое спасибо. –

+0

Большинство приветствуется @ArmanMomeni ... ':)'. Очень рад помочь вам. – vijayP

Смежные вопросы