1

我正在尝试以jQuery UI调制的方式使用。而不是加载一个.JS具有所有功能的文件(大于 200kb)jQuery UI

<script type="text/javascript" src="jquery.ui.custom.js"></script>

我打算只加载需要的(例如,用于自动完成):

<script type="text/javascript" src="jquery.ui.core.min.js"></script>
<script type="text/javascript" src="jquery.ui.widget.min.js"></script>
<script type="text/javascript" src="jquery.ui.position.min.js"></script>
<script type="text/javascript" src="jquery.ui.menu.min.js"></script>
<script type="text/javascript" src="jquery.ui.autocomplete.min.js"></script>

但我只想在未检测到自动完成功能的情况下通过 javascript 加载这些文件。我知道我可以检查是否jQuery UI已加载到具有以下JavaScript条件的页面:

if (typeof jQuery.ui !== 'undefined'){
    // jQuery UI core is loaded
}

我需要做的是专门检查是否jQuery UI可以使用自动完成功能:

if (typeof jQuery.ui.autocomplete !== 'undefined'){
    // jQuery UI autocomplete is loaded
}

但是上面的代码返回了这个错误:

Uncaught TypeError: Object [object Object] has no method 'autocomplete'

我想要实现的是一种jQuery UI仅在使用其中一个资源时才加载库的方法。来自 Google 等网站的热链接不是一种选择,而且我不能将所有jQuery UI库放在我正在使用的网站的所有页面上。为了实现这一点,我将制作自​​定义 javascript 函数以使用jQuery UIAutocomplete 和 Datepicker 等小部件,在这些函数中,我将检查jQuery UI库是否已加载,如果没有则加载它们。我已经为 Autocomplete 和 Datepicker 实现了这一点,但如果在同一页面上运行这两个函数,它们将无法工作,因为我的jQuery UI库检查并不完全正常。

有人知道这样做的方法吗?

4

1 回答 1

3

自动完成不是定义为 jquery 扩展的一部分吗?我认为你应该检查:

$.fn.autocomplete

由于您调用 $('element').autocomplete(); 调用插件。

于 2013-01-19T03:34:57.517 回答