22 декабря 2015
4 июля 2008
21
Пятничные сниппеты. jQuery, часть вторая
Сегодняшние сниппеты опять про jQuery. Так же не проходите мимо прошлой статьи про jQuery.
Расположение объекта по центру экрана
jQuery.fn.center = function()
{
var w = $(window);
this.css("position","absolute");
this.css("top",(w.height()-this.height())/2+w.scrollTop() + "px");
this.css("left",(w.width()-this.width())/2+w.scrollLeft() + "px");
return this;
}
Замена текста внутри элемента, используя регулярные выражения
Полезно, например при замене «скрыть» - «показать»
jQuery.fn.toggleText = function(a,b)
{
return this.html(this.html().replace(new RegExp("("+a+"|"+b+")"),
function(x){return(x==a)?b:a;}));
}
Запуск события resize после задержки
Задержка нужна по той причине, что событие resize() постоянно, пока юзер изменяет размер окна. А с использование этой функции, ресайз будет запускаться только через некоторое количество мс после того, как юзер прекратит изменять размер экрана.
jQuery.fn.resizeComplete = function(fn, ms)
{
var timer = null;
this.resize(function()
{
if (timer)
{
clearTimeout(timer);
}
timer = setTimeout(fn,ms);
});
}
Создание селектора :contains, не чувствительного к регистру
jQuery.extend(jQuery.expr[':'], {
containsIgnoreCase: "(a.textContent||a.innerText||jQuery(a).text()||'').toLowerCase().indexOf((m[3]||'').toLowerCase())>=0"
});
Имитация таймаута
$('a').click(function()
{
$(this).animate({width:$(this).width()},5000,
function()
{
// Эта функция запустится только через 5 секунд
alert('Ссылка была нажата 5 секунд назад');
})
});
В комментариях можете задавать любые вопросы, касающиеся jQuery. А мы будем на них отвечать.
scrollTop()
иscrollLeft()
должны быть без скобочек - это не функции. К сожалению не сработал первый сниппет, но для себя я в свое время нашел такое решение (см. Some CSS): Ну и дополнительно к этому коду я добавил обработчик изменения размера окна, немного упрощенный вариант:center()
к элементу применяются другие функции, изменяющие его вид/состояние (как напримерfadeIn()
) то значения размеров и положения могут (а может и всегда так) вернуться к прописанным ранее в CSS, т.е. при определенных условиях стили переданные через jQuery не применяются :( Короче если делаешьcenter()
то не стоит указывать соответствующие свойства в CSS. Надеюсь я донес свою мысль вполне ясно.function ___pause(ms) { var date = new Date(); curDate = null; do { var curDate = new Date(); } while ( curDate - date < ms); };
Пример использования второго сниппета.
а есть примеры по замене текста внутри ссылки ?
Раз можно любые вопросы о jQuery...
Как можно сортировать строки в таблице? Типа: по дате, по имени и тд.
Спасибо.
специально для этой цели есть хороший плагин TableSorter.
Надеюсь документация будет понятна, если нет - мы можем расширить этот вопрос на статью.
А вообще, для вопросов у нас спецовый раздел.
TableSorter уже нашёл, и есть ещё frequency decoder.
Но хочется хоть маленько понимать, что происходит. Пока, для меня код jQuery - фарш...
Нашёл ешё такую инфу, думаю начать копать оттуда.
Статья это хорошо, если вам интересно, а то для моей скромной персоны - черезчур :).
Спасибо.
по клику на баттон
и все. форма сабмитнулась на два урла. И даже страница не перезагрузилась. :)
А если с перезаугрзкой то
тоесть аяксом сабмитишь форму на лог пхп а потом по саксесу аякса сабмитишь форму. У формы имя formname ну и экшн на index.php
ps одинарные кавычки забекслешились... ну это не я.
function color(data){
$('#color123').attr('value', data);
}
Наверное имелось в виду НЕ чувствительного к регистру?
вставка кода как есть не привела к требуемому результату..