【问题标题】:JQuery .center is not a functionJQuery .center 不是函数
【发布时间】:2017-08-22 05:35:50
【问题描述】:

我正在研究 JQuery。我收到这个错误。我试图找出根本原因,但我无法找到它。如果有人可以帮助我,那就太好了。

JS 错误:

Uncaught TypeError: $(...).center is not a function
at HTMLDivElement.<anonymous> (myjs:879)
at HTMLDivElement.opt.complete (jquery-1.8.3.js:9154)
at fire (jquery-1.8.3.js:974)
at Object.add [as done] (jquery-1.8.3.js:1020)
at Animation (jquery-1.8.3.js:8719)
at HTMLDivElement.doAnimation (jquery-1.8.3.js:9034)
at Function.dequeue (jquery-1.8.3.js:1895)
at HTMLDivElement.<anonymous> (jquery-1.8.3.js:1938)
at Function.each (jquery-1.8.3.js:611)
at init.each (jquery-1.8.3.js:241)

我的脚本:

function centerdiv() {
    $('#id').show(0, function () {
         $('#id1').css('z-index','5');
        $('body').css('overflow', 'hidden');
        $('.class').center();
    });
}

所有 JQuery 函数都在工作,我不知道为什么它说 .center 不是一个函数。

【问题讨论】:

  • console.log($('.class')) 说什么?
  • jQuery 里竟然还有.center() 这样的功能?我只从 jQuery UI 脚本中知道.position()。是你自己写的函数?
  • 是的,在 JQuery @JakubChlebowicz 中有一个名为 .center 的函数
  • 我什至在 jQuery API 上都找不到它。 :/ 只要你自己添加到jQuery.fnprototype里面就可以了
  • @step jQuery 和 jQueryUI 的文档根本没有提到这个 .center 函数,谷歌也没有找到它。这表明它是您在某处定义的本地函数。查找包含在其他 JSP 文件中但不在此文件中的库文件。它可能是在您当前未在此页面中加载的某个地方定义的。

标签: javascript jquery


【解决方案1】:

您的错误是告诉您没有$.center()。但是,你可以做一个!

这是来自this answer by Tony L.的示例

jQuery.fn.center = function(parent) {
    if (parent) {
        parent = this.parent();
    } else {
        parent = window;
    }
    this.css({
        "position": "absolute",
        "top": ((($(parent).height() - this.outerHeight()) / 2) + $(parent).scrollTop() + "px"),
        "left": ((($(parent).width() - this.outerWidth()) / 2) + $(parent).scrollLeft() + "px")
    });
return this;
}

$("div.target:nth-child(1)").center(true); // Center relitive to parent
$("div.target:nth-child(2)").center(false); // Center relitive to window
div.container{
    width:200px;
    height:200px;
    border:1px solid #555;
    position:relative;
    top:10px;
    left:10px;
}

div.target{
    width:60px;
    height:60px;
    color:white;
    background:rgba(30,30,30,.7);
    border-radius: 10px;
    text-align:center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
    <div class="target">1<br>parent</div>
    <div class="target">2<br>window</div>
</div>

【讨论】:

  • 很高兴您提供了这个答案,但是您真的想要两个版本的 $.center() 在一个代码库中浮动吗?似乎将来可能会造成很大的混乱,尤其是如果两个版本的功能不完全相同的话。
  • @Ringo 有哪两个$.center() 方法? jQuery 没有自带原生方法。
  • 如果您阅读了 OP 对下面我的回答的回复,您会发现很有可能有人已经向该代码库添加了 $.center()。
【解决方案2】:

错误意味着$.center() 不是您可以使用的jQuery 方法。与其尝试调用不存在的方法,不如将 CSS 更改为居中。例如:

Centering a div vertically & horizontally using jQuery

您可以创建自己的center 方法,但不能只调用$.center(),因为它不存在。

【讨论】:

  • 感谢您的回复。但是在其他jsp中,我使用相同的功能来居中。所以我相信 $.center() 存在。
  • 你需要尝试在你的代码库中找到方法 .center() 。在所有 javascript 文件中搜索 function center(或只是 center)。您很可能使用了两个不同版本的 jQuery —— $.center() 是添加到一个版本而不是另一个版本的自定义函数。
  • 或者其他 JSP 可能包含您的新 JSP 不包含的 javascript 库。确保包含包含 $.center() 定义的库
猜你喜欢
  • 2020-06-03
  • 2018-10-01
  • 2016-11-01
  • 2014-03-26
  • 2020-10-15
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多