我意识到这个问题相当小众,应该以github或其他方式针对作者。
但是,该插件已超过5年没有更新,作为一个相对简单的插件,我正在尝试对其进行修改,以使其在Previous
时防止其循环元素或点击Next
。
查看此处的工作示例:
https://jsfiddle.net/zwb1vr96/2/
如您所见,在Previous
上按下1
按钮会将其移至3
。
类似地,如果它位于3
上,然后单击Next
,它将循环回到1
。
从小提琴中可以看出,我在插件函数中提供了一个长度变量(var listlength = $("#newsticker li").length;
),该变量告诉我列表中有多少列表(或li
)项。
下一个修改必须在以下几行之内:
if(this.options.nextButton && typeof(this.options.nextButton[0]) !== 'undefined')
this.options.nextButton.click(function(e) {
this.moveNext();
this.resetInterval();
}.bind(this));
if(this.options.prevButton && typeof(this.options.prevButton[0]) !== 'undefined')
this.options.prevButton.click(function(e) {
this.movePrev();
this.resetInterval();
}.bind(this));
但是我仍然坚持这样的事实,即该插件通过定义集合height
而起作用,并且不会修改看不见的li
项。
这就是我要尝试的:
添加一个var count = 0;
并点击next
按钮
this.options.nextButton.click(function(e) {
if (count == 3) { return false; }
else { count++; }
以及上一个按钮
this.options.prevButton.click(function(e) {
if (count == 0) { return false; }
else { count--; }
它在一定程度上有效-但仍然存在问题,并且没有给出适当的计数以返回false。
如何在上面的这些Previous
和Next
脚本函数中创建一个变量,以了解其当前位于哪个列表项(在jsfiddle示例中-1
,{{1} }或2
),如果单击“上一个”按钮时我的列表项位于3
上,则随后会阻止事件触发;如果显示了所显示的列表项,则阻止“下一步”按钮触发在1
处(因此如上所述防止出现循环功能)。
答案 0 :(得分:1)
您的问题是,股票行情没有选项来防止在动画时不断自动删除/追加股票行情:
您可能会考虑将此alternative plugin设为autoAppend
,并将其设置为false
,那么我希望代码在最后停止而不会循环(如果您手动控制)。
答案 1 :(得分:0)
我确实找到了一种解决方案-看起来很基本,但是至少在有限的示例中它确实起作用:
https://jsfiddle.net/8fcz9470/5/
js函数中的新变量
var listlength = $("#newsticker li").length;
var count = 1;
他们修改了Next
按钮
this.options.nextButton.click(function(e) {
if (count == 3) {
alert(count);
return false;
}
else if (count < 3) {
count++;
alert(count);
this.moveNext();
this.resetInterval();
}
}.bind(this));
和Previous
按钮
this.options.prevButton.click(function(e) {
if (count == 1) { alert(count); return false; }
else if (count > 0) {
count--;
alert(count);
this.movePrev();
this.resetInterval();
}
}.bind(this));
如果有人发现此方法有任何潜在问题,请随时提出更好的答案(就像我说的那样,这似乎很基本)!谢谢。
编辑:
实际上,对于动态变量,这似乎在js代码中起作用:
. . . . .
Plugin.prototype = {
init: function() {
var count = 1;
var listlength = $("li").length;
. . . . .
. . . . .
. . . . .
. . . . .
if (this.options.nextButton && typeof(this.options.nextButton[0]) !== 'undefined')
this.options.nextButton.click(function(e) {
if (count == listlength) {
return false;
} else if (count < listlength) {
count++;
this.moveNext();
this.resetInterval();
}
}.bind(this));
if (this.options.prevButton && typeof(this.options.prevButton[0]) !== 'undefined')
this.options.prevButton.click(function(e) {
if (count == 1) {
return false;
} else if (count > 0) {
count--;
this.movePrev();
this.resetInterval();
}
}.bind(this));