【发布时间】:2014-10-18 05:05:37
【问题描述】:
目前我有一个输入文本字段,可能有也可能没有与该特定元素相关联的时间微调器。在某些情况下,我需要完全删除时间微调器功能(而不是禁用它),才能在页面上正确显示它。
目前,我有代码来检查元素上是否存在时间微调器,如下所示:
if ($("#ElementOfInterest").timespinner !== undefined){
$("#ElementOfInterest").timespinner("destroy");
}
第一次加载页面时可以正常工作,但是会引发以下异常:
无法在初始化之前调用时间微调器上的方法;尝试过 调用方法'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 不是方法
所以看起来检查时间微调器的实例没有实现。
【问题讨论】:
-
“这会引发异常”。请提供错误信息?
-
添加了我的更新中抛出的异常。
标签: javascript jquery jquery-ui spinner jquery-ui-spinner