我正在开发一个carousel jquery插件。我试图用多个轮播div元素调用,如
<div class="carousel-container">...</div>
<div class="carousel-container2">...</div>
...
我在哪里调用插件
$(".carousel-container").mycarousel({
// Properties
});
$(".carousel-container2").mycarousel({
// Properties
});
插件代码:
(function($) {
$.fn.mycarousel = function(options) {
var settings = $.extend({
indicators : true,
autoplay : true,
autoplayDir : "forward",
slidesToShow : 1,
slidesToScroll : 1
}, options);
return this.each(function() {
// JavaScript code like constructor function and its prototypes
// variable declarations and initialization
var outerCarouseWidth, imageWidth;
var elements, carousel;
...
// jquery code for selectors, events etc.
var carouselInner = $(".carousel-inner");
var carouselOuter = $(".carousel-outer");
...
$(".next-link").on("click", function(e) {
slide("next", "first");
});
...
});
};
}(jQuery));
好吧,现在我正在尝试使用$(this)在每个函数中访问子元素。像$(this).children()[0] .text(&#34; abc&#34;)。
我面临的问题是,两个轮播div元素共享变量,选择器等的范围。当我滑动一个旋转木马时,其他旋转木马也会移动并面临一些其他技术问题。如何为我调用此插件的每个元素分隔jquery插件的代码范围?
答案 0 :(得分:1)
将元素的查找范围扩展到应用插件的当前元素。
使用carouselEl作为所有子元素的父选择器。
像这样:
```
return this.each(function() {
var carouselEl = $(this);
...
// jquery code for selectors, events etc.
var carouselInner = carouselEl.find(".carousel-inner");
var carouselOuter = carouselEl.find(".carousel-outer");
...
carouselEl.find(".next-link").on("click", function(e) {
slide(carouselEl, "next", "first"); // This must also be scoped.. I cant see the code for this function.
});
...
});
```