TypeError:$(..).SetHeight不是函数

TypeError: $(...).SetHeight is not a function

本文关键字:函数 SetHeight TypeError      更新时间:2023-09-26

我正在为我的网站编写一个流畅的布局,我使用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");

我正在使用$(文档).ready美元(窗口).resize与计时器一起检查是否需要调整任何DIV.的大小

我错过了什么?

您已经定义了一个函数,但使用它就像使用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")一样。


另请参阅:http://api.jquery.com/jQuery.fn.extend/

您看到这个错误是因为没有一个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");

SetHeight函数不是jQuery对象原型的一部分。

让它成为一个,或者让它以jQuery或DOM对象作为第一个参数。