2016-02-29 9 views
6

मैं एक ही पृष्ठ पर एकाधिक कैरोलल्स का उपयोग करने की कोशिश कर रहा हूं। और प्रत्येक बार उपयोगकर्ता केवल कैरोसेल में से एक का उपयोग करता है। तो मैं एक बार में केवल एक स्वाइपर उदाहरण शुरू करना चाहता हूं।एक पृष्ठ पर एकाधिक स्वाइपर प्रारंभिकरण?

http://codepen.io/pruthvip/pen/ZWYbby

$('.swiper-container').on("mouseenter", function (e) { 
    $(this).attr("data-id"); 
    mySwiper = new Swiper ('.' + $(this).attr("data-id"), { 
     loop: true, 
     pagination: '.swiper-pagination', 
     nextButton: '.swiper-button-next', 
     prevButton: '.swiper-button-prev', 
     scrollbar: '.swiper-scrollbar' 
    }); 
}); 

तो बुनियादी तर्क, है जब भी उपयोगकर्ता सुरापानोत्सव में घूमता है, सुरापानोत्सव कि संबंधित className का उपयोग कर आरंभ किया है, और जब वह बाहर घूमता .delete यह .. लेकिन यह काम नहीं कर रहा।

उत्तर

2

समस्या:

Codepen उपलब्ध कराने के आधार पर, काम का आप अंदाजा तरह लेकिन mouseenter और mouseout का उपयोग कर एक अप्रत्याशित पक्ष प्रभाव पड़ता है: माउस स्लाइडर में प्रवेश करती है

  • , स्लाइडर बनाया गया है लेकिन जब आप बाएं और दाएं स्लाइड करते हैं, तो माउस कर्सर अक्सर स्लाइडर कंटेनर के बाहर जाता है जो माउसआउट ईवेंट को ट्रिगर करता है और स्लाइडर को नष्ट कर देता है।

  • निरंतर नष्ट करने और पुनर्निर्माण स्लाइडर की वजह से, यह स्लाइडर को अपनी पहली छवि में रीसेट कर रहा है (क्योंकि स्लाइडर को प्रारंभिक स्थिति में रीसेट कर दिया जाता है)।

यह स्लाइडर का उपयोग वास्तव में कठिन बनाता है।

संभावित समाधान:

  • मैं कारणों से आप केवल समय में एक स्लाइडर का उपयोग करने के लिए है पता नहीं है, लेकिन यह करने के बजाय लगातार नष्ट करने और स्लाइडर पुनः बनाने के प्रदर्शन पर विचार के लायक हो सकता है बस एकाधिक स्लाइडर्स का उपयोग कर। मैं आपको प्रत्येक संभावना के प्रदर्शन के बारे में स्लाइडर प्लगइन के लेखक से पूछने का सुझाव देता हूं।

  • यदि आपके पास माउसेंटर या माउसआउट का उपयोग करने के बजाय बहुत सारे स्लाइडर्स हैं, तो आप स्क्रॉल ईवेंट सुन सकते हैं और जांच सकते हैं कि कौन से स्लाइडर दिखाई दे रहे हैं और कौन नहीं हैं। तो आप साइड इफेक्ट के बिना पहले उल्लेख किए बिना दृश्यता के आधार पर स्लाइडर बना और नष्ट कर सकते हैं।

  • आप प्रत्येक स्लाइडर को केवल एक बार प्रारंभ कर सकते हैं, ताकि आप माउसआउट श्रोता से छुटकारा पा सकें। तो माउसएन्टर ईवेंट पर आप जांच सकते हैं कि स्लाइडर पहले ही शुरू हो चुका है (पहली बार कक्षा जोड़कर या स्लाइडर प्लगइन द्वारा दिए गए किसी भी वर्ग को अपने कंटेनर में देखकर)।

    var mySwiper; 
    $('.swiper-container').on("mouseenter", function (e) { 
        if($(this).hasClass('has-slider')) { 
         return; 
        } 
    
        $(this).attr("data-id"); 
        $(this).addClass('has-slider'); 
        mySwiper = new Swiper ('.' + $(this).attr("data-id"), { 
         loop: true, 
         pagination: '.swiper-pagination', 
         nextButton: '.swiper-button-next', 
         prevButton: '.swiper-button-prev', 
         scrollbar: '.swiper-scrollbar', 
         preventClicksPropagation: false 
        }); 
    }); 
    

मुझे आशा है कि इस मदद करता है।

1

इस प्रयास करें, उम्मीद है कि इस मदद करता है .. :)

var mySwiper; 
 
$('.swiper-container').each(function() { 
 
    $(this).on("mouseenter", function(e) { 
 
    $(this).find('.swiper-pagination,.swiper-button-next,.swiper-button-prev,.swiper-scrollbar').addClass('activeSwipe'); 
 

 
    $(this).attr("data-id"); 
 
    mySwiper = new Swiper('.' + $(this).attr("data-id"), { 
 
     loop: true, 
 
     speed: 400, 
 
     pagination: '.swiper-pagination.activeSwipe', 
 
     nextButton: '.swiper-button-next.activeSwipe', 
 
     prevButton: '.swiper-button-prev.activeSwipe', 
 
     scrollbar: '.swiper-scrollbar.activeSwipe', 
 
     preventClicksPropagation: false 
 
    }); 
 
    }); 
 

 
    $(this).on("mouseleave", function(e) { 
 
    $(this).find('.swiper-pagination,.swiper-button-next,.swiper-button-prev,.swiper-scrollbar').removeClass('activeSwipe'); 
 
    mySwiper.destroy(true, true); 
 
    }); 
 
})
.s1 { 
 
    width: 600px; 
 
    height: 300px; 
 
} 
 
.s2 { 
 
    width: 800px; 
 
    height: 400px; 
 
} 
 
/* Arrows */ 
 

 
.swiper-button-prev2, 
 
.swiper-button-next2 { 
 
    position: absolute; 
 
    top: 50%; 
 
    width: 27px; 
 
    height: 44px; 
 
    margin-top: -22px; 
 
    z-index: 10; 
 
    cursor: pointer; 
 
    -moz-background-size: 27px 44px; 
 
    -webkit-background-size: 27px 44px; 
 
    background-size: 27px 44px; 
 
    background-position: center; 
 
    background-repeat: no-repeat; 
 
} 
 
.swiper-button-prev2.swiper-button-disabled, 
 
.swiper-button-next2.swiper-button-disabled { 
 
    opacity: 0.35; 
 
    cursor: auto; 
 
    pointer-events: none; 
 
} 
 
.swiper-button-prev2, 
 
.swiper-container-rtl .swiper-button-next2 { 
 
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); 
 
    left: 10px; 
 
    right: auto; 
 
} 
 
.swiper-button-prev2.swiper-button-black, 
 
.swiper-container-rtl .swiper-button-next2.swiper-button-black { 
 
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); 
 
} 
 
.swiper-button-prev2.swiper-button-white, 
 
.swiper-container-rtl .swiper-button-next2.swiper-button-white { 
 
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); 
 
} 
 
.swiper-button-next2, 
 
.swiper-container-rtl .swiper-button-prev2 { 
 
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); 
 
    right: 10px; 
 
    left: auto; 
 
} 
 
.swiper-button-next2.swiper-button-black, 
 
.swiper-container-rtl .swiper-button-prev2.swiper-button-black { 
 
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); 
 
} 
 
.swiper-button-next2.swiper-button-white, 
 
.swiper-container-rtl .swiper-button-prev2.swiper-button-white { 
 
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); 
 
} 
 
/* Pagination Styles */ 
 

 
.swiper-pagination2 { 
 
    position: absolute; 
 
    text-align: center; 
 
    -webkit-transition: 300ms; 
 
    -moz-transition: 300ms; 
 
    -o-transition: 300ms; 
 
    transition: 300ms; 
 
    -webkit-transform: translate3d(0, 0, 0); 
 
    -ms-transform: translate3d(0, 0, 0); 
 
    -o-transform: translate3d(0, 0, 0); 
 
    transform: translate3d(0, 0, 0); 
 
    z-index: 10; 
 
} 
 
.swiper-pagination2.swiper-pagination-hidden { 
 
    opacity: 0; 
 
} 
 
.swiper-container-vertical > .swiper-pagination2 { 
 
    right: 10px; 
 
    top: 50%; 
 
    -webkit-transform: translate3d(0px, -50%, 0); 
 
    -moz-transform: translate3d(0px, -50%, 0); 
 
    -o-transform: translate(0px, -50%); 
 
    -ms-transform: translate3d(0px, -50%, 0); 
 
    transform: translate3d(0px, -50%, 0); 
 
} 
 
.swiper-container-vertical > .swiper-pagination2 .swiper-pagination-bullet { 
 
    margin: 5px 0; 
 
    display: block; 
 
} 
 
.swiper-container-horizontal > .swiper-pagination2 { 
 
    bottom: 10px; 
 
    left: 0; 
 
    width: 100%; 
 
} 
 
.swiper-container-horizontal > .swiper-pagination2 .swiper-pagination-bullet { 
 
    margin: 0 5px; 
 
} 
 
/* Scrollbar */ 
 

 
.swiper-scrollbar2 { 
 
    border-radius: 10px; 
 
    position: relative; 
 
    -ms-touch-action: none; 
 
    background: rgba(0, 0, 0, 0.1); 
 
} 
 
.swiper-container-horizontal > .swiper-scrollbar2 { 
 
    position: absolute; 
 
    left: 1%; 
 
    bottom: 3px; 
 
    z-index: 50; 
 
    height: 5px; 
 
    width: 98%; 
 
} 
 
.swiper-container-vertical > .swiper-scrollbar2 { 
 
    position: absolute; 
 
    right: 3px; 
 
    top: 1%; 
 
    z-index: 50; 
 
    width: 5px; 
 
    height: 98%; 
 
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.0.8/css/swiper.min.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.0.8/js/swiper.min.js"></script> 
 
<div class="swiper-container s1" data-id="s1"> 
 
    <!-- Additional required wrapper --> 
 
    <div class="swiper-wrapper"> 
 
    <!-- Slides --> 
 
    <div class="swiper-slide"> 
 
     <img src="http://lorempixel.com/g/600/300/city"> 
 
    </div> 
 
    <div class="swiper-slide"> 
 
     <img src="http://lorempixel.com/g/600/300/people"> 
 
    </div> 
 
    <div class="swiper-slide"> 
 
     <img src="http://lorempixel.com/g/600/300/transport"> 
 
    </div> 
 
    </div> 
 
    <!-- If we need pagination --> 
 
    <div class="swiper-pagination"></div> 
 
    <!-- If we need navigation buttons --> 
 
    <div class="swiper-button-prev"></div> 
 
    <div class="swiper-button-next"></div> 
 
    <!-- If we need scrollbar --> 
 
    <div class="swiper-scrollbar"></div> 
 
</div> 
 
<br/> 
 
<div class="swiper-container s2" data-id="s2"> 
 
    <!-- Additional required wrapper --> 
 
    <div class="swiper-wrapper"> 
 
    <!-- Slides --> 
 
    <div class="swiper-slide"> 
 
     <img src="http://lorempixel.com/g/800/400/city"> 
 
    </div> 
 
    <div class="swiper-slide"> 
 
     <img src="http://lorempixel.com/g/800/400/people"> 
 
    </div> 
 
    <div class="swiper-slide"> 
 
     <img src="http://lorempixel.com/g/800/400/transport"> 
 
    </div> 
 
    </div> 
 
    <!-- If we need pagination --> 
 
    <div class="swiper-pagination"></div> 
 
    <!-- If we need navigation buttons --> 
 
    <div class="swiper-button-prev"></div> 
 
    <div class="swiper-button-next"></div> 
 
    <!-- If we need scrollbar --> 
 
    <div class="swiper-scrollbar"></div> 
 
</div>

https://jsfiddle.net/uhr7uha0/2/ बेला

के लिए
संबंधित मुद्दे