jQuery插件帮助。。影响所有项目,而不是一个项目
正如它在标题中所说,一个小的基本插件有问题。正如您在下面的示例中所看到的,有两个div包含图像。单击其中一个下方的黑框时,它会隐藏两个div,而不是它所在的div。为什么会这样?怎么能修好呢 例如: 代码示例:jQuery插件帮助。。影响所有项目,而不是一个项目,jquery,jquery-plugins,Jquery,Jquery Plugins,正如它在标题中所说,一个小的基本插件有问题。正如您在下面的示例中所看到的,有两个div包含图像。单击其中一个下方的黑框时,它会隐藏两个div,而不是它所在的div。为什么会这样?怎么能修好呢 例如: 代码示例: (function($){ $.fn.extend({ premiumSlider: function(options) { var defaults = { width: 520, // Set width height: 340, // Set height
(function($){
$.fn.extend({
premiumSlider: function(options) {
var defaults = {
width: 520, // Set width
height: 340, // Set height
startImage: 0, // Choose start image
tranSpeed: 800, // Time taken to transition between images
pauseTime: 3000, // Time slider remains paused before transitioning
autoPlay: true, // Play the slider on load; true/false
pauseHover: true, // Pause the slider on mouse hover
transition: 'Slide', // Transition style
easing: 'easeInOutExpo', // Easing style (slide only)
preload: true, // Whether or not to preload images
preloadIcon: 'images/loading.gif',
preloadColour: '#fff'
}
var options = $.extend(defaults, options);
return this.each(function(){
var vars = options;
var obj = $(this);
var stuff = obj.find('.slider-wrap');
$('.icon').click(function(){
obj.hide();
});
});
}
});
})(jQuery);
问题是选择器应用于两个图标。您可以使用以下方法解决此问题:
如果嵌套得更深,则可以使用:
因为您在查找.icon时未限定搜索范围。将单击功能更改为如下所示:
$('.icon', obj).click(function()
{
obj.hide();
}
);
这是因为在您的函数中:
return this.each(function(){
var vars = options;
var obj = $(this);
var stuff = obj.find('.slider-wrap');
$('.icon').click(function(){
obj.hide();
});
});
该行:
var stuff = obj.find('.slider-wrap');
正在查找两个滑块都使用的类“slider wrap”。你可能想考虑单独地隐藏它们。你如何将你的插件绑定到黑匣子?这意味着这是一个插件,所以我这样做如下:$(‘滑动器’)。和$('.slider-2').premiumSlider()$(本节)。引用.premiumSlider()前面的选择器,因此我认为隐藏它会隐藏该选择器,但它同时隐藏这两个选择器。这只是我遇到的一个更严重问题的简化版本。简单地说,该插件不能在一个页面上处理多个实例。我也在想办法得到它。。
$('.icon', obj).click(function()
{
obj.hide();
}
);
return this.each(function(){
var vars = options;
var obj = $(this);
var stuff = obj.find('.slider-wrap');
$('.icon').click(function(){
obj.hide();
});
});
var stuff = obj.find('.slider-wrap');