我在我的页面上使用了一个jquery插件,vTicker,“用于简单而简单的垂直新闻自动滚动”。我正在将它与rss jquery插件结合使用。它工作正常,但我需要创建一个按钮来进行手动滚动。谁能告诉我怎么做?我猜我需要从vTicker文件中调用moveUp函数,但是由于函数的创建方式,以及vticker本身的创建方式,我真的不知道该怎么做。
我像这样创建我的vTicker:
$('#ticker1').rssfeed(uRL).ajaxStop(function() {
$('#ticker1 div.rssBody').vTicker();
})
这是vTicker代码:
/*
* Tadas Juozapaitis ( kasp3rito@gmail.com )
*/
(function($){
$.fn.vTicker = function(options) {
var defaults = {
speed: 700,
pause: 15000,
showItems: 3,
animation: '',
mousePause: true,
isPaused: false
};
var options = $.extend(defaults, options);
moveUp = function(obj2, height){
if(options.isPaused)
return;
var obj = obj2.children('ul');
var iframe = $('#iFrame2');
first = obj.children('li:first').clone(true);
second = obj.children('li:odd:first').clone(true);
iframe.attr('src', (second.children('h4').children('a').attr("href")));
obj.animate({top: '-=' + height + 'px'}, options.speed, function() {
$(this).children('li:first').remove();
$(this).css('top', '0px');
});
if(options.animation == 'fade')
{
obj.children('li:first').fadeOut(options.speed);
obj.children('li:last').hide().fadeIn(options.speed);
}
first.appendTo(obj);
};
return this.each(function() {
var obj = $(this);
var maxHeight = 0;
obj.css({overflow: 'hidden', position: 'relative'})
.children('ul').css({position: 'absolute', margin: 0, padding: 0})
.children('li').css({margin: 0, padding: 0});
obj.children('ul').children('li').each(function(){
if($(this).height() > maxHeight)
{
maxHeight = $(this).height();
}
});
obj.children('ul').children('li').each(function(){
$(this).height(maxHeight);
});
obj.height(maxHeight * options.showItems);
var interval = setInterval(function(){ moveUp(obj, maxHeight); }, options.pause);
if(options.mousePause)
{
obj.bind("mouseenter",function(){
options.isPaused = true;
}).bind("mouseleave",function(){
options.isPaused = false;
});
}
});
};
})(jQuery);
感谢阅读。
答案 0 :(得分:3)
简短的回答是,你做不到。 moveUp函数在插件范围内完全隔离,你不能直接调用它。
要修改插件以便手动滚动,请在行return this.each(function() {
之前添加:
$.fn.extend({
vTickerMoveUp: function() {
var obj = $(this);
var maxHeight = 0;
obj.children('ul').children('li').each(function(){
if($(this).height() > maxHeight) maxHeight = $(this).height();
});
moveUp(obj, maxHeight);
}
});
然后,要滚动,请执行以下操作:
var ticker = $('#ticker1 div.rssBody').vTicker();
ticker.vTickerMoveUp();
答案 1 :(得分:0)
由于moveup声明缺少var
,这意味着一旦调用vTicker,moveup()将被静态定义为window(即全局)的属性。因此我认为你可以在那之后从任何地方打电话给moveup()
。