Mit den Methoden animate und scrollTop in jQuery können Sie ohne Plugin eine einfache Animation zum Scrollen nach oben erstellen:
// Back to top $('.top').click(function (e) { e.preventDefault(); $('html, body').animate({scrollTop: 0}, 800); });
<!-- Create an anchor tag --> <a class="top" href="#">Back to top</a>
Änderung Der scrollTop-Wert ändert sich an der Stelle, an der die Bildlaufleiste platziert werden soll. Alles, was Sie wirklich tun müssen, ist, den Hauptteil des Dokuments 800 Millisekunden lang zu animieren, bis er zum Anfang des Dokuments scrollt.
Hinweis: Seien Sie vorsichtig bei einigen Fehlverhalten von scrollTop.
Bilder vorab laden
Wenn Ihre Webseite viele Bilder verwenden wird, die zunächst unsichtbar sind (z. B. beim Schweben), können Sie diese Bilder vorab laden:
$.preloadImages = function () { for (var i = 0; i < arguments.length; i++) { $('<img alt="jQuery-Tipps, die Front-End-Programmierer kennen sollten" >').attr('src', arguments[i]); } }; $.preloadImages('img/hover-on.png', 'img/hover-off.png');
Überprüfen Sie, ob das Bild geladen ist
Um das Skript fortzusetzen, müssen Sie manchmal überprüfen, ob das Bild vollständig geladen ist:
$('img').load(function () { console.log('image load successful'); });
Sie können dies auch überprüfen, indem Sie das ersetzen -Tag mit einer ID oder Klasse Ob ein bestimmtes Bild geladen wird.
Defekte Bilder automatisch reparieren
Defekte Bildlinks einzeln zu ersetzen ist sehr mühsam. Der folgende einfache Code kann Ihnen jedoch helfen:
$('img').on('error', function () { if(!$(this).hasClass('broken-image')) { $(this).prop('src', 'img/broken.png').addClass('broken-image'); } });
Auch wenn Sie keine defekten Links haben, verlieren Sie durch das Hinzufügen dieses Codes nichts.
Hover Toggle Class
Angenommen, Sie möchten, dass ein anklickbares Element seine Farbe ändert, wenn der Benutzer mit der Maus darüber fährt. Dann können Sie dem Element eine Klasse hinzufügen, wenn der Benutzer mit der Maus darüber fährt, und sie andernfalls entfernen:
$('.btn').hover(function () { $(this).addClass('hover'); }, function () { $(this).removeClass('hover'); });
Sie müssen nur das erforderliche CSS hinzufügen. Eine einfachere Möglichkeit ist die Verwendung der toggleClass-Methode:
$('.btn').hover(function () { $(this).toggleClass('hover'); });
Hinweis: Vielleicht ist die CSS-Lösung in diesem Fall schneller, aber es ist notwendig, diese Methode zu verstehen.
Eingabefelder deaktivieren
Manchmal möchten Sie möglicherweise die Senden-Schaltfläche eines Formulars oder eine seiner Texteingaben deaktivieren, bis der Benutzer eine bestimmte Aktion ausführt (z. B. das Kontrollkästchen „Ich habe gelesen“ aktiviert). Kontrollkästchen „Bedingungen“ aktivieren). Fügen Sie das Attribut „disabled“ zu Ihrer Eingabe hinzu, um es bei Bedarf zu aktivieren:
$('input[type="submit"]').prop('disabled', true);
Dann führen Sie einfach die Prop-Methode der Eingabe aus, setzen aber den Wert von „disabled“ auf „false“:
$('input[type="submit"]').prop('disabled', false);
Laden des Links stoppen
Manchmal müssen Sie weder auf eine bestimmte Webseite verlinken, noch möchten Sie die Seite neu laden – vielleicht möchten Sie, dass der Link etwas anderes tut, beispielsweise um andere Skripte auszulösen. Dazu muss man sich darum kümmern, die Standardaktion zu blockieren:
$('a.no-link').click(function (e) { e.preventDefault(); });
Einblenden/Schieben-Wechsel
Schieben und Einblenden sind beides Dinge, die wir häufig verwenden, wenn wir jQuery zum Animieren verwenden. Wenn Sie ein Element nur anzeigen möchten, nachdem der Benutzer darauf geklickt hat, ist die Verwendung der Methoden fadeIn und slideDown perfekt. Wenn Sie jedoch möchten, dass das Element beim ersten Klick erscheint und beim zweiten Klick verschwindet, können Sie den folgenden Code ausprobieren:
// Fade $('.btn').click(function () { $('.element').fadeToggle('slow'); }); // Toggle $('.btn').click(function () { $('.element').slideToggle('slow'); });
简单的手风琴
这是一个可快速生成手风琴的简单方法:
// Close all panels $('#accordion').find('.content').hide(); // Accordion $('#accordion').find('.accordion-header').click(function () { var next = $(this).next(); next.slideToggle('fast'); $('.content').not(next).slideUp('fast'); return false; });
通过添加这个脚本,你真正需要做的仅仅是在页面上添加必要的HTML元素,这样它就可以运行工作了。
让两个div高度相同
有时候,你需要让两个div无论包含什么内容都拥有相同的高度:
$('.div').css('min-height', $('.main-div').height());
设置 min-height,这意味着它可以比主div大但绝对不能比主div小。不过,还有一种更灵活的方法是遍历一组元素,然后将高度设置为最高的那个元素的高度:
var $columns = $('.column'); var height = 0; $columns.each(function () { if ($(this).height() > height) { height = $(this).height(); } }); $columns.height(height);
如果你希望所有列的高度相同:
var $rows = $('.same-height-columns'); $rows.each(function () { $(this).find('.column').height($(this).height()); });
在新标签页/窗口打开外部链接
在一个新的浏览器tab或窗口中打开外部链接,并确保同一个来源的链接能在同一个tab或者窗口中打开:
$('a[href^="http"]').attr('target', '_blank'); $('a[href^="//"]').attr('target', '_blank'); $('a[href^="' + window.location.origin + '"]').attr('target', '_self');
注意:window.location.origin 在IE10中无效。修复的时候要小心这个问题。
在改变Visibility时触发
当用户不再关注某个tab,或重新聚焦原来的那个tab上时,触发JavaScript:
$(document).on('visibilitychange', function (e) { if (e.target.visibilityState === "visible") { console.log('Tab is now in view!'); } else if (e.target.visibilityState === "hidden") { console.log('Tab is now hidden!'); } });
AJAX调用错误处理
当Ajax调用返回404或500错误时,就执行错误处理程序。如果没有定义处理程序,其他的jQuery代码或会就此罢工。定义一个全局的Ajax错误处理程序:
$(document).ajaxError(function (e, xhr, settings, error) { console.log(error); });
链式插件调用
jQuery允许“链式”插件的方法调用,以减轻反复查询DOM并创建多个jQuery对象的过程。比方说,下面的代码片段代表了你的插件方法调用:
$('#elem').show(); $('#elem').html('bla'); $('#elem').otherStuff();
通过使用链式,可以大大改善:
$('#elem') .show() .html('bla') .otherStuff();
还有一种方法是在(前缀$)变量中高速缓存元素:
var $elem = $('#elem'); $elem.hide(); $elem.html('bla'); $elem.otherStuff();
链式和高速缓存的方法都是jQuery中可以让代码变得更短和更快的代最佳做法。
英文原文:jQuery Tips Everyone Should Know