JQuery 功能列表滑动延迟
这就是我正在尝试做的事情。我在 3 个不同的列中滑动 3 个 div。我想对此脚本进行延迟,以便 3 列以相同的速度变化,但它们在不同的时间变化。 javascript
/*
* FeatureList - simple and easy creation of an interactive "Featured Items" widget
* Examples and documentation at: http://jqueryglobe.com/article/feature_list/
* Version: 1.0.0 (01/09/2009)
* Copyright (c) 2009 jQueryGlobe
* Licensed under the MIT License: http://en.wikipedia.org/wiki/MIT_License
* Requires: jQuery v1.3
*/
(function($) {
$.fn.featureList = function(options) {
var tabs = $(this);
var output = $(options.output);
new jQuery.featureList(tabs, output, options, speed);
return this;
};
$.featureList = function(tabs, output, options, speed) {
function slide(nr) {
if (typeof nr == "undefined") {
nr = visible_item + 1;
nr = nr >= total_items ? 0 : nr;
}
tabs.removeClass('current').filter(":eq(" + nr + ")").addClass('current');
output.stop(true, true).filter(":visible").fadeOut();
output.filter(":eq(" + nr + ")").fadeIn(function() {
visible_item = nr;
});
}
var options = options || {};
var total_items = tabs.length;
var visible_item = options.start_item || 0;
options.pause_on_hover = options.pause_on_hover || true;
output.pause_on_hover = output.pause_on_hover || true;
options.transition_interval = options.transition_interval || speed;
output.hide().eq( visible_item ).show();
tabs.eq( visible_item ).addClass('current');
tabs.click(function() {
if ($(this).hasClass('current')) {
return false;
}
slide( tabs.index( this) );
});
if (options.transition_interval > 0) {
var timer = setInterval(function () {
slide();
}, options.transition_interval);
if (options.pause_on_hover) {
tabs.mouseenter(function() {
clearInterval( timer );
}).mouseleave(function() {
clearInterval( timer );
timer = setInterval(function () {
slide();
}, options.transition_interval);
});
}
if (output.pause_on_hover) {
output.mouseenter(function() {
clearInterval( timer );
}).mouseleave(function() {
clearInterval( timer );
timer = setInterval(function () {
slide();
}, options.transition_interval);
});
}
}
};
})(jQuery);
$(document).ready(function() {
$.featureList(
$("#sliderSelection li"), //Your Menu
$("#slider img"), //Your Content
{start_item:0}, //Starting Item
5000 //Change Speed
);
$.featureList(
$("#graphicSelect li"),
$("#featuredDesign .design"),
{start_item:0},
1000
);
$.featureList(
$("#webSelect li"),
$("#featuredWeb .web"),
{start_item:0},
1000
);
$.featureList(
$("#marketSelect li"),
$("#featuredMarket .market"),
{start_item:0},
1000
);
});
这是我只想添加一个delay()作为第5个参数的 。我的 HTML 大约有 300 行长,我的 css 也同样长,所以我不会让页面陷入困境。任何帮助将不胜感激! http://jqueryglobe.com/article/feature-list
So here's what I'm trying to do. I am sliding 3 div in 3 different columns. I want to put a delay on this script so that the 3 columns change at the same speed but they change at different times. Here's the javascript
/*
* FeatureList - simple and easy creation of an interactive "Featured Items" widget
* Examples and documentation at: http://jqueryglobe.com/article/feature_list/
* Version: 1.0.0 (01/09/2009)
* Copyright (c) 2009 jQueryGlobe
* Licensed under the MIT License: http://en.wikipedia.org/wiki/MIT_License
* Requires: jQuery v1.3
*/
(function($) {
$.fn.featureList = function(options) {
var tabs = $(this);
var output = $(options.output);
new jQuery.featureList(tabs, output, options, speed);
return this;
};
$.featureList = function(tabs, output, options, speed) {
function slide(nr) {
if (typeof nr == "undefined") {
nr = visible_item + 1;
nr = nr >= total_items ? 0 : nr;
}
tabs.removeClass('current').filter(":eq(" + nr + ")").addClass('current');
output.stop(true, true).filter(":visible").fadeOut();
output.filter(":eq(" + nr + ")").fadeIn(function() {
visible_item = nr;
});
}
var options = options || {};
var total_items = tabs.length;
var visible_item = options.start_item || 0;
options.pause_on_hover = options.pause_on_hover || true;
output.pause_on_hover = output.pause_on_hover || true;
options.transition_interval = options.transition_interval || speed;
output.hide().eq( visible_item ).show();
tabs.eq( visible_item ).addClass('current');
tabs.click(function() {
if ($(this).hasClass('current')) {
return false;
}
slide( tabs.index( this) );
});
if (options.transition_interval > 0) {
var timer = setInterval(function () {
slide();
}, options.transition_interval);
if (options.pause_on_hover) {
tabs.mouseenter(function() {
clearInterval( timer );
}).mouseleave(function() {
clearInterval( timer );
timer = setInterval(function () {
slide();
}, options.transition_interval);
});
}
if (output.pause_on_hover) {
output.mouseenter(function() {
clearInterval( timer );
}).mouseleave(function() {
clearInterval( timer );
timer = setInterval(function () {
slide();
}, options.transition_interval);
});
}
}
};
})(jQuery);
$(document).ready(function() {
$.featureList(
$("#sliderSelection li"), //Your Menu
$("#slider img"), //Your Content
{start_item:0}, //Starting Item
5000 //Change Speed
);
$.featureList(
$("#graphicSelect li"),
$("#featuredDesign .design"),
{start_item:0},
1000
);
$.featureList(
$("#webSelect li"),
$("#featuredWeb .web"),
{start_item:0},
1000
);
$.featureList(
$("#marketSelect li"),
$("#featuredMarket .market"),
{start_item:0},
1000
);
});
I just want to add a delay() as a 5th parameter. my HTML is about 300 lines long and my css is just as lengthy so I won't bog down the page with that. Any help would be much appreciated!
http://jqueryglobe.com/article/feature-list
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你可以尝试用 setTimeout( f, timeOut ) 函数包装所有“$.featureList()”部分,确保你设置 >timeOut 参数正确
编辑: 抱歉,我确信以前的代码可以正常工作。我已经更新它以确保它没问题。
证明位于:http://jsfiddle.net/uDrg5/2/
can U try wrapping all "$.featureList()" section with setTimeout( f, timeOut ) function, make sure U set up timeOut param correctly
EDIT: Sorry, I was sure the previous code would be working. I've updated it to make sure it's fine.
Proof is at : http://jsfiddle.net/uDrg5/2/
如果您想避免修改第 3 方插件,一种方法是将这些调用包装在基本 js 计时器中。如果您扩展它并且插件稍后有更新,您始终必须保持更改同步。
其中 CALL = 您想要运行效果的功能列表。
正如您提到的,这里的另一个选择是向方法添加参数。您也可以在那里应用上述想法。如果是我,并且我正确理解了你的问题,我会选择尽可能不修改插件源的方法。
If you wanted to avoid modifying the 3rd party plugin, one way would be to wrap these calls in basic js timers. If you extend it and there is an update later to the plugin, you are always having to keep your changes in sync.
Where CALL = FeatureList you want effects to run against.
Another option you have here is to add a param to the method, as you mentioned. You could apply the aforementioned idea there too. If it were me though, and I understood your question correctly, I would opt for the approach that didn't modify the plugin source when possible.