2013-12-15 2 views
1

저는 웹 사이트의 유체 레이아웃을 작성하고 있으며 jQuery를 사용하여 DIV 높이와 너비를 설정합니다. SetHeight 함수에서 원하는 높이를 함수의 첫 번째 매개 변수로 둡니다. 여백을 뺀 다음 새 높이를 적용합니다. 나는 (창) 여부를 확인하는 타이머을 .resize .ready $ (문서)와 $를 사용하고

var h = $(window).height(); 
$("#Slider").SetHeight(h-260).removeClass("mobile"); 

: 여기

function SetHeight(height){ 
    var outer = $(this).outerHeight(true); 
    var current = $(this).height(); 
    var margin = o-c; 
    height = height-margin; 
    $(this).css("height",height); 
}; 

오류 메시지를 트리거 코드입니다 DIV의 크기를 조정해야합니다.

내가 놓친 것?

+0

SetHeight()을 JQuery와 방법이 아니다. '$ ("# Slider"). SetHeight (..)를 사용하면 jquery의 메서드로 설정할 수 있습니다 :'$ .fn.SetHeight = function() {/ * your code */return this; .)'FYI, 관습에 따라 setHeight()가 아닌 SetHeight()가되어야합니다. –

답변

4

함수를 정의했지만 jQuery 객체의 메서드처럼 사용하고 있습니다.

function f(param1, param2){ 
    // code 
} 

는이처럼 사용할 필요가 : 당신이 할 경우

f(div, 4); 

당신처럼 당신이 그것을 사용하려는 경우를, 당신은 같은 것을 할 필요가 :

$.fn.SetHeight = function(param1, param2){ 
    // code 
} 

그래서 당신이 할 수 있습니다 :

,691 당신이 당신의 예에서와 같이 사용할 수

$("#Slider").SetHeight(h-260).removeClass("mobile"); 

:

function SetHeight(height){ 
    var outer = this.outerHeight(true); 
    var current = this.height(); 
    var margin = outer-current; 
    height = height-margin; 
    this.css("height",height); 
    return this; // to allow chaining 
}; 
$.fn.SetHeight = SetHeight; // add as a jQuery method 

그런 다음 당신은 당신의 코드를 사용할 수 있습니다.

this은 이미 jQuery 개체이므로 $(this)과 같이 줄 바꿈하지 않아도됩니다. 끝 부분에 this을 반환해야 연쇄를 지원할 수 있습니다 (예 : .removeClass("mobile")).


은 참조 : http://api.jquery.com/jQuery.fn.extend/

+0

감사합니다. jQuery에서 초보자입니다. :) – amatyas001

+2

이 답변을 받아야합니다 IMHO –

1

Jquery object의 기능이 SetHeight()과 같지 않으므로 오류가 표시됩니다. 필요에 따라 함수 정의와 함수 호출을 변경해야합니다.

시도,

function SetHeight(xElement,height){ 
    var outer = xElement.outerHeight(true); 
    var current = xElement.height(); 
    var margin = o-c; 
    height = height-margin; 
    xElement.css("height",height); 

    return xElement; 
}; 

함수 호출,

var h = $(window).height(); 
SetHeight($("#Slider"),h-260).removeClass("mobile"); 
+0

작동합니다! 고마워요! – amatyas001

+0

@Stewie 도와 줘서 기뻐요! –

1

귀하의 SetHeight 함수는 jQuery 오브젝트의 프로토 타입의 일부가 아닙니다.

1 개로 만들거나 첫 번째 인수로 jQuery 또는 DOM 객체를 사용하도록 설정하십시오.

관련 문제