>  기사  >  웹 프론트엔드  >  웹 프런트엔드 개발에 종사하는 모든 사람이 알아야 할 jquery 팁 및 jquery 세 가지 약어_jquery

웹 프런트엔드 개발에 종사하는 모든 사람이 알아야 할 jquery 팁 및 jquery 세 가지 약어_jquery

WBOY
WBOY원래의
2016-05-16 15:32:231706검색

jQuery 기술을 향상하는 데 도움이 되는 간단한 팁 모음입니다. 현재 편집자는 여러분을 위해 14가지 jquery 팁을 편집했습니다.

디렉토리 구조

1 위로 가기 버튼
2 미리 로드된 이미지
3 이미지가 로딩되었는지 확인하세요
4 손상된 사진 자동 복구
5Hover의 클래스 스위치
6입력 필드 비활성화
7링크 로딩 중지
8 페이드/슬라이드 스위치
9가지 간단한 접기 효과
10두 개의 Div를 같은 높이로 설정
11새창에서 외부링크 열기
12 텍스트 요소 찾기
13표시된 트리거와 숨겨진 트리거 전환

다음은 각 팁의 구체적인 의미를 소개합니다.

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. 입력 필드 비활성화

사용자가 특정 작업(예: '약관을 읽었습니다' 확인란 확인)을 수행할 때까지 양식의 제출 버튼이나 텍스트 입력 상자를 사용할 수 없게 만들고 싶을 수도 있습니다. 원하는 효과를 얻으려면 입력에 비활성화된 속성을 추가하세요.

 $('input[type="submit"]').prop('disabled', true);

disabled 값을 false로 변경하려면 입력에 대해 prop 메서드를 다시 실행하면 됩니다.

 $('input[type="submit"]').prop('disabled', false);

7.링크 로딩 중지

때때로 페이지로 이동하거나 페이지를 다시 로드하는 링크가 필요하지 않지만 다른 스크립트를 실행하는 등의 다른 작업을 수행할 수 있기를 원하는 경우가 있습니다. 다음 코드는 기본 동작을 비활성화하는 약간의 트릭입니다.

 $('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가 동일한 높이를 갖기를 원할 수도 있습니다.

('.div').css('min-height', $('.main-div').height());

이 예에서는 최소 높이를 설정합니다. 즉, 기본 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!');
 }
 });

Ajax 调用的错误处理

当某次 Ajax 调用返回 404 或 500 错误,就会执行错误处理。但如果没有定义该处理,其他 jQuery 代码或许会停止工作。可以通过下面这段代码定义一个全局 Ajax 错误处理:

$(document).ajaxError(function (e, xhr, settings, error) {
 console.log(error);
 });

14.插件链式调用

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小技巧之三个简写

简洁写法如下所示:

对象的简写

在过去,如果你想创建一个对象,你需要这样:

var car = new Object(); 
car.colour = 'red'; 
car.wheels = 4; 
car.hubcaps = 'spinning'; 
car.age = 4;

下面的写法能够达到同样的效果:

var car = { 
colour:'red', 
wheels:4, 
hubcaps:'spinning', 
age:4 
}

这样就简单多了,你不需要反复使用这个对象的名称。
这样 car 就定义好了,也许你会遇到 invalidUserInSession 的问题,这只有你在使用IE时会碰到,只要记住一点,不要右大括号前面写分号,你就不会有麻烦。

数组的简写

传统的定义数组的方法是这样:

var moviesThatNeedBetterWriters = new Array(
  'Transformers','Transformers2','Avatar','Indiana Jones 4');

简写版是这样:

var moviesThatNeedBetterWriters = [
  'Transformers','Transformers2','Avatar','Indiana Jones 4']; 

对于数组,这里有个问题,其实没有什么图组功能。但你会经常发现有人这样定义上面的 car ,就像这样:

var car = new Array(); 
car['colour'] = 'red'; 
car['wheels'] = 4; 
car['hubcaps'] = 'spinning'; 
car['age'] = 4;

数组不是万能的;这样写不对,会让人困惑。图组实际上是对象的功能,人们混淆了这两个概念。

三元条件符号的简写

另外一个非常酷的简写方法是使用与三元条件符号。
你不必写成下面的样子:

var direction; 
if(x < 200){ 
  direction = 1; 
}
else { 
  direction = -1; 
}

你可以使用三元条件符号简化它:

var direction = x < 200 &#63; 1 : -1;

当条件为true 时取问号后面的值,否则取冒号后面的值。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.