Web/JQuery

[jQuery] 전역함수

클리엘 2020. 6. 17. 01:17
728x90

jQuery에서 전역 함수는 다음과 같이 생성합니다. javascript에서 단순 함수를 만들어 사용해도 되는 부분이지만 jQuery에서는 이렇게 사용하는 것도 가능하다는 것만 참고로 하면 될 것 같습니다.

<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="utf-8">
	<title></title>
	<script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
	<script>
		$.myfunc = function () {
			$('img').animate({
				opacity: 0.2
			}, 'slow', function() {
				alert('완료');
			});
		};

		$(function () {
			$.myfunc();
		});
	</script>
</head>
<body>
	<img src="http://cliel.com/assets/img/item/home.png">
</body>
</html>

$.[함수명]의 형태로 선언한 뒤에 원하는 함수를 구현하고 $.[함수명]의 형태로 호출합니다. 만약 함수를 호출하는데 선택자가 사용되어야 한다면 jQuery의 fn속성을 사용해야 합니다.

$.fn.myfunc = function () {
	$(this).animate({
		opacity: 0.2
	}, 'slow', function() {
		alert('완료');
	});
};

$(function () {
	$('img').myfunc();
});

이때 this는 선택자에서 선택된 요소를 의미하며 함수를 호출할때는 $(선택자).[함수명] 형태로 호출해야 합니다.

 

생성한 전역함수에 특정한 값을 전달해야 한다면 원하는 값을 전달하는 객체를 지정해 다음과 같이 넘겨야 합니다.

$.fn.myfunc = function (param) {
	$(this).animate({
		opacity: 0.2
	}, 'slow', function() {
		alert('완료');
	});

	alert(param.myvalue);
};

$(function () {
	$('img').myfunc({
		myvalue: 'abc'
	});
});

객체가 존재하지 않는 경우 기본값을 지정해야 한다면 미리 객체를 정의해 둘 수 있습니다.

$.fn.myfunc = function (param) {
	$(this).animate({
		opacity: 0.2
	}, 'slow', function() {
		alert('완료');
	});

	var pr = { myvalue : 'def' };

	$.extend(pr, param);

	alert(pr.myvalue);
};

하지만 미리 객체를 전달할지 하지 않을지 알 수 없으므로 이때는 param이 존재하는 경우 기존 객체의 값을 덮어쓸 수 있도록 $.extend를 사용합니다.

 

위와 같이 하면 함수를 호출할때 객체가 존재하면 해당 객체의 값을, 존재하지 않으면 기존 객체의 값을 사용하게 됩니다.

 

728x90