具体检查jQuery.ui.autocomplete是否未定义

时间:2012-11-09 13:04:07

标签: jquery-ui jquery-autocomplete jquery-ui-datepicker

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

<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 UI小部件,例如Autocomplete和Datepicker,在这些函数中,我将检查是否加载了jQuery UI库,如果它们不是,则加载它们“T。我已经为Autocomplete和Datepicker实现了这一点,但是如果在同一页面上运行这两个函数它们将无法工作,因为我的jQuery UI库检查功能不完全正常。

任何人都知道这样做的方法吗?

1 个答案:

答案 0 :(得分:3)

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

$.fn.autocomplete

因为你调用$('element')。autocomplete();调用插件。