我有一个“a”元素,我想在悬停时向左滚动。为此,我删除第一个字符并将其附加到字符串的末尾。
如何连续启动滚动功能?
鼠标输入元素 - >在鼠标离开元素或用户点击它之前,会触发scroll()。
HTML:
<a href="foo.htm" class="scrollthis">this text scrolls on hover</a>
jQuery的:
$(".scrollthis").hover(function(){
scroll($(this));
});
function scroll(ele){
var s = $(ele).text().substr(1)+$(ele).text().substr(0,1);
$(ele).text(s);
}
答案 0 :(得分:2)
使用setInterval()
从mouseenter重复调用它,然后clearInterval()
在mouseleave上停止它:
var intervalID;
$(".scrollthis").hover(function(){
var $this = $(this);
intervalID = setInterval(function() {
scroll($this);
}, 100);
}, function() {
clearInterval(intervalID);
});
请注意,您不需要在$(ele)
函数中使用scroll()
,因为ele
已经是jQuery对象:
function scroll(ele){
var s = ele.text().substr(1)+ele.text().substr(0,1);
ele.text(s);
}
如果您使用scroll()
方法的回调语法(或者甚至将这一行直接移到.text()
代码中),您可以使.hover
函数更整洁:
function scroll(ele){
ele.text(function(i,val) { return val.substr(1) + val.substr(0,1); });
}
答案 1 :(得分:0)
以下是完整代码,您可以try it out as a jsfiddle
function scroll(ele){
var s = $(ele).text().substr(1)+$(ele).text().substr(0,1);
$(ele).text(s);
}
scrollInterval = null;
function startScrolling(e) {
if (!scrollInterval) {
scrollInterval = setInterval(function(){
scroll(e)
},100);
}
}
function stopScrolling(e) {
clearInterval(scrollInterval);
scrollInterval = null;
}
$(".scrollthis").hover(function(){
startScrolling($(this));
});
$(".scrollthis").mouseout(function(){
stopScrolling($(this));
});
$(".scrollthis").mousedown(function(){
stopScrolling($(this));
});
答案 2 :(得分:0)
<强> CSS 强>
div.container{
width: 130px;
}
div.title-holder {
width: 130px;
height:20px;
text-align:center;
background: silver;
overflow:hidden;
position: relative;
}
div.title-holder a {
position: relative;
white-space:nowrap;
left: 0px;
}
div.image{
background: brown;
width: 100%;
height: 100px;
}
<强> HTML 强>
<div class="container">
<div class="title-holder">
<a href="somelink.html">long text that needs to scroll, long text that needs to scroll, long text that needs to scroll</a>
</div>
</div>
<强> JS 强>
$(function(){
var scroll_text;
$('div.container').hover(
function () {
var $elmt = $(this);
scroll_text = setInterval(function(){scrollText($elmt);}, 5);
},
function () {
clearInterval(scroll_text);
$(this).find('div.title-holder a').css({
left: 0
});
}
);
var scrollText = function($elmt){
var left = $elmt.find('div.title-holder a').position().left - 1;
left = -left > $elmt.find('div.title-holder a').width() ? $elmt.find('div.title-holder').width() : left;
$elmt.find('div.title-holder a').css({
left: left
});
};
});