TimeSpinner检查未定义是否不起作用

时间:2014-10-17 15:56:42

标签: javascript jquery jquery-ui spinner jquery-ui-spinner

目前我有一个输入文本字段,可能有也可能没有与该特定元素绑定的时间戳。在某些情况下,我需要完全删除timespinner功能(而不是禁用它),以便在页面上正确显示它。

目前,我有代码来检查元素上是否存在timespinner,如下所示:

if ($("#ElementOfInterest").timespinner !== undefined){
    $("#ElementOfInterest").timespinner("destroy");
}

首次加载页面时效果正常,但是会引发以下异常:

  

在初始化之前无法在timespinner上调用方法;尝试   调用方法'销毁'

出于某种原因,undefined的检查通过并尝试在不存在的元素上使用timepinner。

因此,我的UI目前正常​​运行的唯一方法是将其包装在try/catch块中,如下所示:

if ($("#ElementOfInterest").timespinner !== undefined) {
    try {
        $("#ElementOfInterest").timespinner("destroy");
    } catch (error) {
    }
}

这很有效,但它很邋..我希望检查成功并从代码中删除try/catch块。

我错过了一些特别检查或什么?这里发生了什么?

更新

我尝试了@GlenSwift建议的以下代码:

if (typeof $("#ElementOfInterest").spinner("instance") !== 'undefined') {
    $("#ElementOfInterest").timespinner("destroy");
}

然而,这给了我这个例外:

  

在初始化之前无法在微调器上调用方法;尝试做   通话方法'实例'

我也试过timespinner("instance")但我回来了:

  

undefined不是方法

所以看起来没有实现检查timepinner的实例。

2 个答案:

答案 0 :(得分:1)

尝试:

if (typeof $( "#ElementOfInterest" ).spinner( "instance" ) !== 'undefined') {
    $("#ElementOfInterest").timespinner("destroy");
}

参考:http://api.jqueryui.com/spinner/#method-instance

答案 1 :(得分:1)

$("#ElementOfInterest").timespinner !== undefined只是检查是否定义了$().timespinner,只要加载了插件就会这样。如何检查元素是否具有微调器添加的类。 if ($("#ElementOfInterest").hasClass('ui-spinner-input'))