'脉冲'Javascript/JQuery中的一个边界
'Pulsing' a border in Javascript/JQuery
我正在对web表单进行验证,我想做的一件事是为包含错误输入的div添加一个脉冲边界。
此解决方案:使用jquery和http://jsfiddle.net/Ue4wy/4/几乎切中要害。
但是我希望能够将点击处理程序上的黄色边框淡化为黑色;重置循环(本例暂停循环),因此下次用户点击submit时,它将再次启动。
使用下面的代码将颜色重置为黑色是可行的(尽管我相信有一个更优雅的解决方案),但我该如何重置循环?
$('#weight').animate({
borderBottomColor: '#000',
borderLeftColor: '#000',
borderRightColor: '#000',
borderTopColor : '#000'
}, 'fast' );
任何想法都值得赞赏!
我已经更新了update()
函数以接受一个参数i
,然后在单击处理程序中调用该参数以及window.clearTimeout()
:
var addClickHandler = function() {
$("div").click(function() {
window.clearTimeout(timer);
update(0);
});
};
这确实要求对update()
的其他调用也需要通过i
:
var update = function(i) {
$("div").css("border-color", 'rgb(' + i + ',' + i + ',' + 0 + ')');
};
JS Fiddle演示。
编辑以修改点击处理程序,为动画提供切换(停止/启动):
var addClickHandler = function() {
$("div").toggle(function() {
window.clearTimeout(timer);
update(0);
}, function() {
anim.go();
});
};
JS Fiddle演示。
编辑为了获得更具上下文意识的单击处理程序,此版本将检查timer
变量的存在,如果找不到,则启动动画。如果发现,则清除超时,将timer
设置为false
,并调用update(0)
将边界重置为黑色:
var addClickHandler = function() {
$("div").click(function() {
console.log(timer);
if (!timer){
timer = window.setTimeout(anim.go, 30);
}
else {
window.clearTimeout(timer);
timer = false;
update(0);
}
});
JS Fiddle演示。
参考文献:
- CCD_ 10
- CCD_ 11
这里有一个jQuery UI效果来脉动边界:
$.effects.borderPulsate = function(o) {
return this.queue(function() {
var elem = $(this),
mode = $.effects.setMode(elem, o.options.mode || 'show'),
times = (o.options.times || 5),
duration = o.duration ? o.duration : $.fx.speeds._default,
isVisible = elem.is(':visible'),
color = (o.options.color || 'rgb(255,255,0)'),
startColor = (o.options.startColor || elem.css('border-color') || 'transparent');
if (!isVisible) {
elem.show();
}
if ((mode == 'hide' && isVisible) || (mode == 'show' && !isVisible)) {
times--;
}
for (var i = 0; i < times; i++) {
elem.animate({ 'border-color': color }, duration, o.options.easing, function() {
elem.css( 'border-color', startColor );
});
}
elem.animate({ 'border-color': color }, duration, o.options.easing, function() {
(o.callback && o.callback.apply(this, arguments));
});
elem
.queue('fx', function() { elem.dequeue(); })
.dequeue();
});
};
http://jsfiddle.net/cdeutsch/TjkNd/
使用borderColor
可以同时更改所有边框的颜色,但不需要设置动画。你可以给你的对象添加一个重置方法来处理整个事情:
var reset = function() {
i = 0;
step = 10;
up = true;
if(timer) window.clearTimeout(timer);
timer = null;
$('#weight').css('borderColor', '#000');
}
然后在您的点击处理程序上,在anim.stop()
之后调用anim.reset()
。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 如何编写一个不死边界的变量
- 更改一个图像's边界多次
- 谷歌地图v3:你可以设置一个地图的边界
- 谷歌地图将边界限制在世界的一个实例中
- '脉冲'Javascript/JQuery中的一个边界
- 有没有一种方法可以使用HTML Canvas和JavaScript从一个点填充到它到达边界
- 一个传单图像的边界视图映射到一个景观视窗
- 左和右在一个里有一个边界
- 如何设置一个js变量的最小和最大边界
- 传单:当边界改变时触发一个事件
- html5 canvas:我如何绘制一个真正的长波/曲线,并从中得到边界
- 我如何创建一个全屏,无边界浏览器/暂时隐藏浏览器窗口
- 如何跨边界将td内容移动到同一行的另一个td
- HTML5/Javascript游戏开发-如果我有多个边界,只有最近的一个可以工作
- 如何在fabricjs中选择另一个形状边界内的形状
- 给定区域的一个位置的区域/边界纬度
- 谷歌地图动画或突出显示一个特定的标记在一个边界
- 如何把边界围绕我的输出在PHPexcel在一个动态的方式