2014-10-09 2 views
0

저는 여기에 새로운데, 나는이 문제에 대한 일련의 조사를 통해 여기에 왔습니다. 다음/이전 단추가있는 jquery 슬라이더가 있습니다 ... 잘 발췌했습니다. 현재 브라우저 너비를 기준으로 여러 이미지를 표시하려고합니다. 예를 들어 브라우저 너비가 400보다 작 으면 1 개의 이미지 만 표시됩니다. 하지만로드에서 작동하지만 브라우저 크기를 조정할 때 예상대로 작동하지 않습니다. (나는 Jquery에 너무 익숙하다. .. 분명히). 도와 주셔서 감사합니다.

는 HTML

<div class="trends"> 
    <div class="top-trends"> 
     <img src="/some-img.png"> 
    </div> 

    <div class="top-trends"> 
     <img src="/some-img.png"> 
    </div> 

    <div class="top-trends"> 
     <img src="/some-img.png"> 
    </div> 

    <div class="top-trends"> 
     <img src="/some-img.png"> 
    </div> 

    <div class="top-trends"> 
     <img src="/some-img.png"> 
    </div> 

    <div class="top-trends"> 
     <img src="/some-img.png"> 
    </div> 
</div> 

그리고

(function($){ 
    $(document).ready(function(){ 
     var windowsWidth = $(window).width(); 

     if (windowsWidth < 400) { 
      $('.trends').children('.top-trends:gt(0)').hide(); 

      var slideFoward = function() { 
       var next = $('.top-trends:visible').next(); 
       var first = $('.top-trends:visible').first(); 

       if ($('.top-trends:visible').length == 1 && $('.top-trends:visible ~ .top-trends:hidden').length == 0) { 
        $('.trends-next').addAttr('disabled', 'disabled'); 
       } 
       next.show(); 
       first.hide(); 
      } 
      var slideBackwards = function() { 
       var prev = $('.top-trends:visible').prev(); 
       var last = $('.top-trends:visible').last(); 
       var hf = $('.top-trends:visible').last().prevAll().length; 

       if (hf == 1 ) { 
        $('.trends-back').addAttr('disabled', 'disabled'); 
       } 
       prev.show(); 
       last.hide(); 
      } 
     } 

     else if (windowsWidth < 600) { 
      $('.trends').children('.top-trends:gt(1)').hide(); 

      var slideFoward = function() { 
       var next = $('.top-trends:visible').next(); 
       var first = $('.top-trends:visible').first(); 

       if ($('.top-trends:visible').length == 2 && $('.top-trends:visible ~ .top-trends:hidden').length == 0) { 
        $('.trends-next').addAttr('disabled', 'disabled'); 
       } 
       next.show(); 
       first.hide(); 
      } 
      var slideBackwards = function() { 
       var prev = $('.top-trends:visible').prev(); 
       var last = $('.top-trends:visible').last(); 
       var hf = $('.top-trends:visible').last().prevAll().length; 

       if (hf == 2 ) { 
        $('.trends-back').addAttr('disabled', 'disabled'); 
       } 
       prev.show(); 
       last.hide(); 
      } 
     } 

     else if (windowsWidth < 800) { 
      $('.trends').children('.top-trends:gt(2)').hide(); 

      var slideFoward = function() { 
       var next = $('.top-trends:visible').next(); 
       var first = $('.top-trends:visible').first(); 

       if ($('.top-trends:visible').length == 3 && $('.top-trends:visible ~ .top-trends:hidden').length == 0) { 
        $('.trends-next').addAttr('disabled', 'disabled'); 
       } 
       next.show(); 
       first.hide(); 
      } 
      var slideBackwards = function() { 
       var prev = $('.top-trends:visible').prev(); 
       var last = $('.top-trends:visible').last(); 
       var hf = $('.top-trends:visible').last().prevAll().length; 

      if (hf == 3 ) { 
       $('.trends-back').addAttr('disabled', 'disabled'); 
      } 
      prev.show(); 
      last.hide(); 
     } 
    } 

    else { 
     $('.trends').children('.top-trends:gt(3)').hide(); 

     var slideFoward = function() { 
      var next = $('.top-trends:visible').next(); 
      var first = $('.top-trends:visible').first(); 

      if ($('.top-trends:visible').length == 4 && $('.top-trends:visible ~ .top-trends:hidden').length == 0) { 
       $('.trends-next').addAttr('disabled', 'disabled'); 
      } 
      next.show(); 
      first.hide(); 
     } 
     var slideBackwards = function() { 
      var prev = $('.top-trends:visible').prev(); 
      var last = $('.top-trends:visible').last(); 
      var hf = $('.top-trends:visible').last().prevAll().length; 

      if (hf == 4 ) { 
       $('.trends-back').addAttr('disabled', 'disabled'); 
      } 
      prev.show(); 
      last.hide(); 
     } 
    } 
    $('.trends-next').click(slideFoward); 
    $('.trends-back').click(slideBackwards); 
}); 


$(window).resize(function(){ 
    var windowsWidth = $(window).width(); 

    if (windowsWidth < 400) { 
     $('.trends').children('.top-trends:gt(0)').hide(); 

     var slideFoward = function() { 
      var next = $('.top-trends:visible').next(); 
      var first = $('.top-trends:visible').first(); 

      if ($('.top-trends:visible').length == 1 && $('.top-trends:visible ~ .top-trends:hidden').length == 0) { 
       $('.trends-next').addAttr('disabled', 'disabled'); 
      } 
      next.show(); 
      first.hide(); 
     } 
     var slideBackwards = function() { 
      var prev = $('.top-trends:visible').prev(); 
      var last = $('.top-trends:visible').last(); 
      var hf = $('.top-trends:visible').last().prevAll().length; 

      if (hf == 1 ) { 
       $('.trends-back').addAttr('disabled', 'disabled'); 
      } 
      prev.show(); 
      last.hide(); 
     } 
    } 

    else if (windowsWidth < 600) { 
     $('.trends').children('.top-trends:gt(1)').hide(); 

     var slideFoward = function() { 
      var next = $('.top-trends:visible').next(); 
      var first = $('.top-trends:visible').first(); 

      if ($('.top-trends:visible').length == 2 && $('.top-trends:visible ~ .top-trends:hidden').length == 0) { 
       $('.trends-next').addAttr('disabled', 'disabled'); 
      } 
      next.show(); 
      first.hide(); 
     } 
     var slideBackwards = function() { 
      var prev = $('.top-trends:visible').prev(); 
      var last = $('.top-trends:visible').last(); 
      var hf = $('.top-trends:visible').last().prevAll().length; 

      if (hf == 2 ) { 
       $('.trends-back').addAttr('disabled', 'disabled'); 
      } 
      prev.show(); 
      last.hide(); 
     } 
    } 

    else if (windowsWidth < 800) { 
     $('.trends').children('.top-trends:gt(2)').hide(); 

     var slideFoward = function() { 
      var next = $('.top-trends:visible').next(); 
      var first = $('.top-trends:visible').first(); 

      if ($('.top-trends:visible').length == 3 && $('.top-trends:visible ~ .top-trends:hidden').length == 0) { 
       $('.trends-next').addAttr('disabled', 'disabled'); 
      } 
      next.show(); 
      first.hide(); 
     } 
     var slideBackwards = function() { 
      var prev = $('.top-trends:visible').prev(); 
      var last = $('.top-trends:visible').last(); 
      var hf = $('.top-trends:visible').last().prevAll().length; 

      if (hf == 3 ) { 
       $('.trends-back').addAttr('disabled', 'disabled'); 
      } 
      prev.show(); 
      last.hide(); 
     } 
    } 

    else { 
     $('.trends').children('.top-trends:gt(3)').hide(); 

     var slideFoward = function() { 
      var next = $('.top-trends:visible').next(); 
      var first = $('.top-trends:visible').first(); 

      if ($('.top-trends:visible').length == 4 && $('.top-trends:visible ~ .top-trends:hidden').length == 0) { 
       $('.trends-next').addAttr('disabled', 'disabled'); 
      } 
      next.show(); 
      first.hide(); 
     } 
     var slideBackwards = function() { 
      var prev = $('.top-trends:visible').prev(); 
      var last = $('.top-trends:visible').last(); 
      var hf = $('.top-trends:visible').last().prevAll().length; 

      if (hf == 4 ) { 
       $('.trends-back').addAttr('disabled', 'disabled'); 
      } 
      prev.show(); 
      last.hide(); 
     } 
    } 
    $('.trends-next').click(slideFoward); 
    $('.trends-back').click(slideBackwards); 
}); 
})(jQuery); 
+0

"예상대로 작동하지 않습니다"는 정보가 충분하지 않습니다. 어떻게 작동 할 것이라고 기대합니까? 현재 코드의 동작을 어떻게 관찰합니까? 기억해야 할 것은 우리가 원하는 것을 모르고 우리가 실행할 수있는 것을 우리에게주지 않았기 때문에 우리가해야 할 일은 당신의 말과 코드에서 알 수있는 의도입니다. 정확히 무엇을 원하는지 정확하게 기술하고 현재 코드가 무엇을하고 있는지 정확히 설명하십시오. – jfriend00

+0

P. 시작할 때와 코드 크기를 복사 할 때 사용되는 것과 똑같은 코드를 공통 기능에 포함시킬 수 있어야합니다. – jfriend00

답변

1

좋아 JQuery와, 그래서 나는 당신이 무슨 뜻인지 알 것 같아요. 창 크기를 줄이면 요소가 숨겨 지지만 늘리면 표시되지 않습니다. 맞습니까?

문제가 잘 풀리면 해결됩니다.

$(window).resize(function() { $('.trends').children('.top-trends').show(); if (windowsWidth < 400) { ...

here (나는 명확성을 위해 모든 slideFoward/slideFoward 기능을 제거있어 전체를 참조하십시오 : 당신은 그냥 요소를 숨길 수있는 결정을 한 후 모든 창 크기 조정에있는 모든 이미지를 표시하고 싶은 - 다음 번에는 불필요한 코드를 모두 제거해야 할 수도 있습니다. 문제가 훨씬 간단해질 것입니다.)

+0

우수! 이것은 내가 원하는 것입니다. LOL 내 모든 시간을 검색하는 데 사용하고 그것은 단 한 줄 수정 :) 고마워요 @ wap300 방금 내 하루 만들었습니다! –

+0

확실한 일, 도와 드리겠습니다 :) – wap300

관련 문제