我正在为我的网站编写一个流畅的布局,我使用jQuery来设置DIV的高度和宽度。 在SetHeight函数中,我将想要的高度作为函数的第一个参数,而不是我减去边距并应用新的高度。
function SetHeight(height){
var outer = $(this).outerHeight(true);
var current = $(this).height();
var margin = o-c;
height = height-margin;
$(this).css("height",height);
};
以下是触发错误消息的代码:
var h = $(window).height();
$("#Slider").SetHeight(h-260).removeClass("mobile");
我正在使用 $(document).ready 和 $(window).resize 和一个计时器来检查我是否需要调整任何DIV的大小。
我错过了什么?
答案 0 :(得分:4)
你已经定义了一个函数,但你正在使用它像jQuery对象上的方法。
如果你这样做:
function f(param1, param2){
// code
}
你需要像这样使用它:
f(div, 4);
如果你想像你一样使用它,你需要做这样的事情:
$.fn.SetHeight = function(param1, param2){
// code
}
所以你可能想要这个:
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
然后你可以使用你的代码:
$("#Slider").SetHeight(h-260).removeClass("mobile");
您可以像在示例中那样使用它。
请注意this
已经是jQuery对象,因此您不需要像$(this)
那样包装它。你最后应该返回this
来支持链接 - 就像在最后调用.removeClass("mobile")
一样。
答案 1 :(得分: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");
答案 2 :(得分:1)
您的SetHeight
函数不是jQuery对象原型的一部分。
将其设为一个,或者将jQuery或DOM对象作为第一个参数。