Javascript 触发器';单击';每3秒发生一次事件,而不单击“下一步”按钮?
我有一个液体转盘滑块设置在我的一个网站位于这里。滑块位于“我们的作品”和“我们的客户”区域下,当前用户可以通过单击“下一步/上一步”按钮滚动浏览作品。现在我想做的是,每3秒钟“点击”功能就会自动触发,这样滑块就会自动移动到下一组4个作品。我尝试使用触发器功能,但我想我无法正确地集成它。以下是liquid carousel javascript文件中的代码:Javascript 触发器';单击';每3秒发生一次事件,而不单击“下一步”按钮?,javascript,jquery,slider,carousel,Javascript,Jquery,Slider,Carousel,我有一个液体转盘滑块设置在我的一个网站位于这里。滑块位于“我们的作品”和“我们的客户”区域下,当前用户可以通过单击“下一步/上一步”按钮滚动浏览作品。现在我想做的是,每3秒钟“点击”功能就会自动触发,这样滑块就会自动移动到下一组4个作品。我尝试使用触发器功能,但我想我无法正确地集成它。以下是liquid carousel javascript文件中的代码: (function($){ $.fn.liquidcarousel = function(options) { var defaults
(function($){
$.fn.liquidcarousel = function(options) {
var defaults = {
duration: 10000
};
var options = $.extend(defaults, options);
return this.each(function() {
var divobj = $(this);
$(divobj).css('overflow', 'hidden');
$('> .wrapper', divobj).css('overflow', 'hidden');
$('> .wrapper', divobj).css('float', 'left');
$('> .wrapper > ul', divobj).css('float', 'left');
$('> .wrapper > ul', divobj).css('margin', '0');
$('> .wrapper > ul', divobj).css('padding', '0');
$('> .wrapper > ul', divobj).css('display', 'block');
$('> .wrapper > ul > li', divobj).css('display', 'block');
$('> .wrapper > ul > li', divobj).css('float', 'left');
var visiblelis = 0;
var totallis = $('> .wrapper > ul > li', this).length;
var currentposition = 0;
var additionalmargin = 0;
var totalwidth = 0;
$(window).resize(function(e){
var divwidth = $(divobj).width();
var availablewidth = divwidth;
var heighest = 0;
$('> .wrapper > ul > li', divobj).css("height", "auto");
$('> .wrapper > ul > li', divobj).each(function () {
if ( $(this).outerHeight() > heighest ) {
heighest = $(this).outerHeight();
}
});
$(divobj).height(heighest);
$('> .wrapper', divobj).height(heighest);
$('> .wrapper > ul', divobj).height(heighest);
$('> .wrapper > ul > li', divobj).height(heighest);
var liwidth = $('> .wrapper > ul > li:first', divobj).outerWidth(true);
var originalmarginright = parseInt($('> .wrapper > ul > li', divobj).css('marginRight'));
var originalmarginleft = parseInt($('> .wrapper > ul > li', divobj).css('marginLeft'));
totalwidth = liwidth + additionalmargin;
previousvisiblelis = visiblelis;
visiblelis = Math.floor((availablewidth / liwidth));
if (visiblelis < totallis) {
additionalmargin = Math.floor((availablewidth - (visiblelis * liwidth))/visiblelis);
} else {
additionalmargin = Math.floor((availablewidth - (totallis * liwidth))/totallis);
}
halfadditionalmargin = Math.floor(additionalmargin/2);
totalwidth = liwidth + additionalmargin;
if (visiblelis > previousvisiblelis || totallis <= visiblelis) {
currentposition -= (visiblelis-previousvisiblelis);
if (currentposition < 0 || totallis <= visiblelis ) {
currentposition = 0;
}
}
$('> .wrapper > ul', divobj).css('marginLeft', -(currentposition * totalwidth));
if (visiblelis >= totallis || ((divwidth >= (totallis * liwidth)) && options.hidearrows) ) {
if (options.hidearrows) {
$('> .prev', $(divobj).parents(".widget")).hide();
$('> .next', $(divobj).parents(".widget")).hide();
additionalmargin = Math.floor((divwidth - (totallis * liwidth))/totallis);
halfadditionalmargin = Math.floor(additionalmargin/2);
totalwidth = liwidth + additionalmargin;
$('> .wrapper > ul > li', divobj).css('marginRight', originalmarginright + halfadditionalmargin);
$('> .wrapper > ul > li', divobj).css('marginLeft', originalmarginleft + halfadditionalmargin);
}
$('> .wrapper', divobj).width(totallis * totalwidth);
$('> ul', divobj).width(totallis * totalwidth);
$('> .wrapper', divobj).css('marginLeft', 0);
currentposition = 0;
} else {
$('.prev', $(divobj).parents(".widget")).show();
$('.next', $(divobj).parents(".widget")).show();
$('> .wrapper', divobj).width(visiblelis * totalwidth);
$('> ul', divobj).width(visiblelis * totalwidth);
}
});
$('.next', $(divobj).parents(".widget")).click(function(){
if (totallis <= visiblelis) {
currentposition = 0;
} else if ((currentposition + (visiblelis*2)) < totallis) {
currentposition += visiblelis;
} else if ((currentposition + (visiblelis*2)) >= totallis -1) {
currentposition = totallis - visiblelis;
}
$('> .wrapper > ul', divobj).stop();
$('> .wrapper > ul', divobj).animate({'marginLeft': -(currentposition * totalwidth)}, options.duration);
$('.prev', $(divobj).parents(".widget")).click(function(){
if ((currentposition - visiblelis) > 0) {
currentposition -= visiblelis;
} else if ((currentposition - (visiblelis*2)) <= 0) {
currentposition = 0;
}
$('> .wrapper > ul', divobj).stop();
$('> .wrapper > ul', divobj).animate({'marginLeft': -(currentposition * totalwidth)}, options.duration);
});
$('.next', $(divobj).parents(".widget")).dblclick(function(e){
e.preventDefault();
clearSelection();
});
$('.prev', $(divobj).parents(".widget")).dblclick(function(e){
e.preventDefault();
clearSelection();
});
function clearSelection() {
if (document.selection && document.selection.empty) {
document.selection.empty();
} else if (window.getSelection) {
var sel = window.getSelection();
sel.removeAllRanges();
}
}
$(window).resize();
});
(函数($){
$.fn.liquidcarousel=功能(选项){
var默认值={
持续时间:10000
};
var options=$.extend(默认值,选项);
返回此值。每个(函数(){
var divobj=$(本);
$(divobj).css('overflow','hidden');
$('>.wrapper',divobj.css('overflow','hidden');
$('>.wrapper',divobj.css('float','left');
$('>.wrapper>ul',divobj.css('float','left');
$('>.wrapper>ul',divobj.css('margin','0');
$('>.wrapper>ul',divobj.css('padding','0');
$('>.wrapper>ul',divobj.css('display','block');
$('>.wrapper>ul>li',divobj.css('display','block');
$('>.wrapper>ul>li',divobj.css('float','left');
var visiblelis=0;
var totalis=$('>.wrapper>ul>li',this).length;
var currentposition=0;
var附加保证金=0;
var totalwidth=0;
$(窗口)。调整大小(函数(e){
var divwidth=$(divobj).width();
var availablewidth=divwidth;
var heighest=0;
$('>.wrapper>ul>li',divobj).css(“高度”,“自动”);
$('>.wrapper>ul>li',divobj).each(函数(){
if($(this).outerHeight()>heighest){
heighest=$(this.outerHeight();
}
});
$(divobj).高度(heighest);
$('>.wrapper',divobj).高度(heighest);
$('>.wrapper>ul',divobj).高度(heighest);
$('>.wrapper>ul>li',divobj).高度(heighest);
var liwidth=$('>.wrapper>ul>li:first',divobj).outerWidth(true);
var originalmarginright=parseInt($('>.wrapper>ul>li',divobj.css('marginRight'));
var originalmarginleft=parseInt($('>.wrapper>ul>li',divobj.css('marginLeft'));
totalwidth=liwidth+附加边距;
以前的visiblelis=visiblelis;
visiblelis=数学地板((可用宽度/宽度));
如果(可视性previousvisiblelis | | totalis=totalis | | | |((divwidth>=(totalis*liwidth))&&options.hiderrows)){
if(options.hiderrows){
$('>.prev',$(divobj.parents(“.widget”)).hide();
$('>.next',$(divobj.parents(“.widget”).hide();
附加裕度=数学地板((divwidth-(totalis*liwidth))/totalis);
halfadditionalmargin=数学地板(additionalmargin/2);
totalwidth=liwidth+附加边距;
$('>.wrapper>ul>li',divobj).css('marginRight',originalmarginright+halfadditionalmargin);
$('>.wrapper>ul>li',divobj).css('marginLeft',originalmarginleft+halfadditionalmargin);
}
$('>.wrapper',divobj).width(totalis*totalwidth);
$('>ul',divobj).width(totalis*totalwidth);
$('>.wrapper',divobj.css('marginLeft',0);
currentposition=0;
}否则{
$('.prev',$(divobj.parents(“.widget”)).show();
$('.next',$(divobj.parents(“.widget”)).show();
$('>.wrapper',divobj).width(visiblelis*totalwidth);
$('>ul',divobj).width(visiblelis*totalwidth);
}
});
$('.next',$(divobj.parents(.widget))。单击(function(){
如果(Totalis=Totalis-1){
currentposition=Totalis-visiblelis;
}
$('>.wrapper>ul',divobj.stop();
$('>.wrapper>ul',divobj).animate({'marginLeft':-(currentposition*totalwidth)},options.duration);
$('.prev',$(divobj).parents(“.widget”)。单击(function(){
如果((当前位置-可视列表)>0){
当前位置-=可视位置;
}如果((当前位置-(visiblelis*2))0){
当前位置-=可视位置;
}否则,如果((currentposition-(visiblelis*2))在上模拟鼠标单击事件,则使用
我之所以这么做是因为类是非唯一的,您可能只想为第一个类调用它
然后可以将其转换为每3
秒重复一次的函数,例如
(function (obj, waitFor) { // wrap to catch variables
var repeatAction = function repeatAction() { // function to be given timeout (stored in variable
obj.each(function (idx, elm) { // and named so it can reference itself; makes life easier);
var ev = document.createEvent("MouseEvents");
ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
elm.dispatchEvent(ev);
});
window.setTimeout(repeatAction, waitFor); // re-invocation of itself
};
window.setTimeout(repeatAction, waitFor); // initial invocation
}($('.next', $(divobj).parents(".widget")), 3000)); // passing vars
编辑:根据要求,。我还尽可能地修复了语法(OP的语法中有一些错误)和“”它。
- 在jQuery中选择您的元素
var next=$('.next',$(divobj.parents(“.widget”)
- 然后每3秒点击一次
设置间隔(下一步。单击,3000)
不过,最好是为此任务创建一个函数(滑动旋转木马),并通过单击调用该函数。然后您可以直接调用该函数,而不是模拟单击。我尝试了此代码,但它不起作用,而是破坏了滑块。我替换了“$('.next',$(divobj).p
$('.prev', $(divobj).parents(".widget")).click(function(){
if ((currentposition - visiblelis) > 0) {
currentposition -= visiblelis;
} else if ((currentposition - (visiblelis*2)) <= 0) {
currentposition = 0;
}
$('> .wrapper > ul', divobj).stop();
$('> .wrapper > ul', divobj).animate({'marginLeft': -(currentposition * totalwidth)}, options.duration);
});
$('.next', $(divobj).parents(".widget")).each(function (idx, elm) {
var ev = document.createEvent("MouseEvents");
ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
elm.dispatchEvent(ev);
});
(function (obj, waitFor) { // wrap to catch variables
var repeatAction = function repeatAction() { // function to be given timeout (stored in variable
obj.each(function (idx, elm) { // and named so it can reference itself; makes life easier);
var ev = document.createEvent("MouseEvents");
ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
elm.dispatchEvent(ev);
});
window.setTimeout(repeatAction, waitFor); // re-invocation of itself
};
window.setTimeout(repeatAction, waitFor); // initial invocation
}($('.next', $(divobj).parents(".widget")), 3000)); // passing vars