Как я могу мигать с JQuery?
Я хотел бы моргнуть текстом моего меню. У меня есть этот код, но он не работает с IE.
(function($)
{
$.fn.blink = function(options) {
var defaults = { delay:500 };
var options = $.extend(defaults, options);
return this.each(function() {
var obj = $(this);
setInterval(function() {
if($(obj).css("color") == "rgb(255, 0, 0)")
{
$(obj).css('color','#000000');
}
else
{
$(obj).css('color','rgb(255, 0, 0)');
}
}, options.delay);
});
}
}(jQuery))
$(document).ready(function(){$('.blink').blink()})
Кто-нибудь может мне помочь? Спасибо!
4 ответа
Подключаемые модули Mini-Effects должны быть проще - очень маленькими и явно эффективными, если это все, что вам нужно из библиотеки эффектов пользовательского интерфейса (кроме этих других базовых элементов, "throb", "shake" и "bob").
Прост в использовании - просто загрузите нужный плагин мини-эффектов, затем просто вызовите blink() для элемента, который вы хотите мигать.
<script type="text/javascript" charset="utf-8" src="javascripts/jquery.blink.min.js"></script>
Затем просто вызовите blink() для какого-нибудь большого ярко окрашенного ресурса:
$(".selector").blink();
Вы устанавливаете obj как $(this), поэтому вы должны каждый раз вызывать obj вместо $(obj).
Просто замени
obj = $(this);
С просто
obj = this;
Но все же подумайте о людях с эпилепсией, плохим зрением и т. Д.
В проводнике:
if($(obj).css("color") == "rgb(255, 0, 0)")
это не так, потому что IE видит это:
$(obj).css("color") == "rgb(255,0,0)";
Без пробелов между числами.
Вы можете исправить это, изменив:
$(obj).css('color','rgb(255, 0, 0)');
$(obj).css('color','rgb(255,0,0)');
а также
if($(obj).css("color") == "rgb(255, 0, 0)")
в
if($(obj).css("color") == "rgb(255,0,0)")
так:
(function($)
{
$.fn.blink = function(options) {
var defaults = { delay:500 };
var options = $.extend(defaults, options);
return this.each(function() {
var obj = $(this);
setInterval(function() {
if($(obj).css("color") == "rgb(255,0,0)")
{
$(obj).css('color','#000000');
}
else
{
$(obj).css('color','rgb(255,0,0)');
}
}, options.delay);
});
}
}(jQuery))
$(document).ready(function(){$('.blink').blink()})
Редакция:
(function($)
{
$.fn.blink = function(options) {
var defaults = { delay:500 };
var options = $.extend(defaults, options);
return this.each(function() {
var obj = $(this);
var state = false;
setInterval(function() {
if(state)
{
$(obj).css('color','#000000');
state = false;
}
else
{
$(obj).css('color','rgb(255,0,0)');
state = true;
}
}, options.delay);
});
}
}(jQuery))
Вы проверяли код с помощью Firebug или встроенных инструментов разработчика в Chrome? Я ожидаю, что вам нужно изменить
}(jQuery))
в
})(jQuery)
(переместите скобку вокруг...)