이 기사에서는 모두가 참고할 수 있도록 일반적으로 사용되는 15개의 jquery 코드 조각을 공유합니다.
1. 위로 가기 버튼
jQuery에서 animate 및 scrollTop 메소드를 사용하면 플러그인 없이도 간단한 Back to Top 애니메이션을 만들 수 있습니다.
// Back to top $('a.top').click(function (e) { e.preventDefault(); $(document.body).animate({scrollTop: 0}, 800); });
<!-- Create an anchor tag --> <a class="top" href="#">Back to top</a>
scrollTop의 값을 스크롤 막대를 멈추려는 위치로 변경합니다. 그런 다음 800밀리초 안에 맨 위로 돌아가도록 설정합니다.
2. 이미지 미리 로드
페이지에서 처음에 표시되지 않는 이미지(예: 마우스 오버)를 많이 사용하는 경우 해당 이미지를 미리 로드하는 것이 유용합니다.
$.preloadImages = function () { for (var i = 0; i < arguments.length; i++) { $('<img>').attr('src', arguments[i]); } }; $.preloadImages('img/hover-on.png', 'img/hover-off.png');
3. 이미지가 로딩되었는지 확인
때로는 스크립트에서 후속 작업을 수행하기 전에 이미지가 완전히 로드되었는지 확인해야 할 수도 있습니다.
$('img').load(function () { console.log('image load successful'); });
img 태그를 ID나 클래스로 대체하여 특정 이미지가 로드되었는지 확인할 수도 있습니다.
4. 손상된 사진 복구
웹사이트의 이미지 링크가 깨진 것을 발견하면 하나씩 교체하는 것이 매우 번거롭습니다. 이 간단한 코드는 많은 도움이 될 수 있습니다:
$('img').on('error', function () { $(this).prop('src', 'img/broken.png'); });
깨진 링크가 없더라도 이 코드를 추가해도 아무런 영향이 없습니다.
5. 호버로 클래스 전환
사용자가 페이지에서 클릭 가능한 요소 위로 마우스를 가져가면 해당 요소의 시각적 표현을 변경하려고 합니다. 다음 코드를 사용하면 사용자가 마우스를 놓을 때 요소에 클래스를 추가할 수 있습니다.
$('.btn').hover(function () { $(this).addClass('hover'); }, function () { $(this).removeClass('hover'); });
필요한 CSS만 추가하면 됩니다. 더 간단한 방법이 필요한 경우에는ggleClass 메소드를 사용할 수도 있습니다:
$('.btn').hover(function () { $(this).toggleClass('hover'); });
참고: 이 예에서는 CSS가 더 빠른 솔루션일 수 있지만 여전히 알아둘 가치가 있습니다.
6. 입력 필드 비활성화
때로는 사용자가 특정 작업(예: "약관을 읽었습니다" 확인란을 확인)을 수행할 때까지 양식의 제출 버튼이나 텍스트 입력 상자를 사용할 수 없도록 만들고 싶을 수도 있습니다. 원하는 효과를 얻으려면 입력에 비활성화된 속성을 추가하세요.
$('a.no-link').click(function (e) { e.preventDefault(); });
8. 페이드/슬라이딩 스위치
페이드 인, 페이드 아웃, 슬라이드는 jQuery를 사용하여 자주 만드는 애니메이션 효과입니다. 어쩌면 사용자가 무언가를 클릭할 때 요소를 표시하고 싶을 수도 있습니다. fadeIn과 SlideDown을 사용하는 것은 둘 다 훌륭합니다. 하지만 첫 번째 클릭 시 요소가 나타나고 두 번째 클릭 시 사라지도록 하려면 다음 코드를 사용하면 됩니다.
// Fade $('.btn').click(function () { $('.element').fadeToggle('slow'); }); // Toggle $('.btn').click(function () { $('.element').slideToggle('slow'); });
9. 간단한 아코디언 효과
아코디언 효과를 얻는 빠르고 쉬운 방법은 다음과 같습니다.
// 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 내에서 스크립트가 제대로 작동하는지 확인하기만 하면 됩니다.
10. 두 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()); });
11、在新标签/窗口打开站外链接
在一个新标签或者新窗口中打开外置链接,并确保站内链接会在相同的标签或窗口中打开:
$('a[href^="http"]').attr('target', '_blank'); $('a[href^="//"]').attr('target', '_blank'); $('a[href^="' + window.location.origin + '"]').attr('target', '_self');
注意:window.location.origin 在 IE 10 中不可用,该 issue 的修复方法。
12、通过文本找到元素
通过使用 jQuery 中的 contains() 选择器,你可以找到某个元素中的文本。如果文本不存在,该元素将会隐藏:
var search = $('#search').val(); $('div:not(:contains("' + search + '"))').hide();
13、视觉改变触发
当用户焦点在另外一个标签上,或重新回到标签时,触发 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!'); } });
14、Ajax 调用的错误处理
当某次 Ajax 调用返回 404 或 500 错误,就会执行错误处理。但如果没有定义该处理,其他 jQuery 代码或许会停止工作。可以通过下面这段代码定义一个全局 Ajax 错误处理:
$(document).ajaxError(function (e, xhr, settings, error) { console.log(error); });
15、插件链式调用
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 中的链式操作和缓存方法,都极大精简和提速了代码。
以上就是本文的全部内容,希望对大家的学习有所帮助。