2015-07-01 2 views
0

У меня есть следующий код для перемещения product-details-content div на 100% каждый раз, когда я нажимаю на product-prev-button. Этот код работает отлично, за исключением того, что он продолжает прокручиваться навсегда. Я хочу, чтобы он остановил прокрутку, когда marginLeft больше, чем -400%. Могу ли я ввести условие где-нибудь, чтобы заставить его работать?JQuery оживить до состояния

$(document).ready(function(){ 
    $("#product-prev-button").click(function(){ 
     $("#product-details-content").animate({ 
      marginLeft: '-=100%' 
     }); 
    }); 
}); 

ответ

1

Просто используйте счетчик ...

var MAX_CLICKS = 4; 

$(function() { 
    var clickCounter = 0; 

    $("#product-prev-button").click(function() { 
     // only move -100% if we are under or at 4 clicks (-400%) 
     if (++clickCounter <= MAX_CLICKS) { 
      $("#product-details-content").animate({ 
       marginLeft: '-=100%' 
      }); 
     } 

     // do other stuff regardless ... 
    }); 
}); 
+1

В JavaScript нет 'const' или это ES6 Spec ... –

+2

Да, я нахожусь в этом шуме ES6 извините:/ – usandfriends

1
$("#product-prev-button").click(function(){ 
      var value = parseInt($("#product-details-content").css('margin-left'));         
      console.log(value); 
      if(value > -400) 
      { 
       $("#product-details-content").animate({ 
        marginLeft: '-=100%' 
       }); 
      } 

      });    
     }); 
+0

Это работает только для первого щелчка. Затем останавливается. – SKB

+0

По умолчанию .animate запускается на 400 мс, поэтому, когда вы нажимаете первый раз, он устанавливает маржу на менее, чем -400%. так что второй раз, если условие терпит неудачу. Чтобы проверить это, исходное значение margin-left должно быть где-то выше, чем 2000, и увидеть остановку анимации до ее достижения, анимация не будет останавливаться между значениями, как это происходит поэтапно, поэтому она завершит шаг и этот шаг может быть установлен margin-left to less than -400% – MGA

+0

Или уменьшите значение анимации, чтобы довести -400 за один раз. Предположим, что начальный марж равен 0, задайте marginLeft: '- = 30%', что приведет к -405. ближайший к тому, что вам нужно. – MGA

0

Я мог заставить его работать, делая небольшую modicifation к коду, предоставленному "MGA".

$(document).ready(function(){ 
$("#product-prev-button").click(function(){ 
    var prevvalue1 = parseInt($("#product-details-content").css('margin-left')); 
    var prevvalue2 = parseInt($("#product-details-content").outerWidth()); 
    var prevvalue=-(prevvalue1/prevvalue2); 
    if(prevvalue < .75) 
    { 
     $("#product-details-content").animate({ 
     marginLeft: '-=100%' 
     }); 
    } 
});    

});

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