나는 변화하는 클래스 이름을 제외하고는 꽤 많이 변하지 않는 함수를 가지고있다. 나는 코드를 조금 덜 텍스트로 만들기를 바랐다. 어떻게하면 작은 함수를 반복하지 않고 번 n 번으로 반복 할 수 있습니까? 내 관심사는 또한 클릭 한 마지막 li에 대한 활성 클래스를 제거하는 것입니다. 여기서 2 개의 인스턴스 만 제공했지만이 코드는 n 번 반복됩니다. 모든 아이디어는 높이 평가할 수 있습니다.중복 기능은 어떻게 조합합니까?
$('a.app1-preview').click(function() {
//remove last active classes
$(".app2").removeClass('active');
$(".app2-preview").removeClass('active');
//Add active class for this
$(this).parent().addClass('active');
$(this).addClass('active');
$('.app-preview-2').fadeOut("slow", function() {
$('.app-preview-1').fadeIn("slow");
});
});
$('a.app2-preview').click(function() {
//remove last active classes
$(".app1").removeClass('active');
$(".app1-preview").removeClass('active');
//Add active class for this
$(this).parent().addClass('active');
$(this).addClass('active');
$('.app-preview-1').fadeOut("slow", function() {
$('.app-preview-2').fadeIn("slow");
});
});
HTML 코드 : 다음
function makeHandler(deactivate, fadeOut, fadeIn) {
return function() {
//remove last active classes
$(deactivate).removeClass('active');
//Add active class for this
$(this).parent().addClass('active');
$(this).addClass('active');
$(fadeOut).fadeOut("slow", function() {
$(fadeIn).fadeIn("slow");
});
});
:
<div class="app-container">
<ul class="apps">
<li class="app1">
<a title href="#" class="app1-preview blocklink">
<span>ANOTHER<br /> APP</span>
</a>
</li>
<li class="app2">
<a title href="#" class="app2-preview blocklink">
<span>SECOND<br /> APP</span>
</a>
</li>
</div>
@Downvoters, 왜 downvote? 이것은 완벽하게 유효합니다 .... – epoch
수업이 너무 구체적 인 이유는 무엇입니까 ('app1', 'app2')? 당신이 아이디처럼 사용하고있는 것 같습니다. 클릭 핸들러에서 'this'가 클릭 항목을 식별하고,'$ (".active")와 일치하는 요소가 이전에 활성화 된 것이어야한다는 점에서 요소에 번호를 부여하지 않고보다 일반적인 방법으로 이것을 작성할 수 있습니다. – nnnnnn
안녕 모두, 답변 주셔서 감사합니다. 각기 다른 배경 이미지와 색상을 사용하기 때문에 클래스가 고유합니다. – user1038814