目前我有一个输入文本字段,它可能有也可能没有与该特定元素相关的时间微调器。在某些情况下,我需要完全删除时间微调器功能(而不是禁用它),才能在页面上正确显示它。
目前,我有代码来检查元素上是否存在时间微调器,如下所示:
if ($("#ElementOfInterest").timespinner !== undefined){
$("#ElementOfInterest").timespinner("destroy");
}
这在页面首次加载时工作正常,但是,这会引发以下异常:
无法在初始化之前调用时间微调器上的方法;试图调用方法“销毁”
出于某种原因,检查undefined
通过并尝试对不存在的元素进行时间调整。
因此,目前我的 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 不是方法
所以看起来检查时间微调器的实例没有实现。