当前,我有一个输入文本字段,该文本字段可能与该特定元素绑定在一起,也可能没有。在某些情况下,我需要完全删除timespinner功能(而不是禁用它),以便在页面上正确显示它。
当前,我有代码来检查timespinner是否在元素上存在,如下所示:
if ($("#ElementOfInterest").timespinner !== undefined){
$("#ElementOfInterest").timespinner("destroy");
}
首次加载页面时,此方法运行良好,但是会引发以下异常:
无法在初始化之前在Timespinner上调用方法;企图
调用方法“破坏”
由于某些原因,对
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");
}
但是,这给了我这个例外:
无法在初始化之前在Spinner上调用方法;企图
调用方法“实例”
我也尝试了
timespinner("instance")
,但我回来了:未定义不是方法
因此,看起来好像没有实现timespinner的实例。
最佳答案
那么$("#ElementOfInterest").timespinner !== undefined
只是检查是否定义了$().timespinner
,只要加载了插件,它就会一直存在。如何检查元素是否具有旋转器添加的类。 if ($("#ElementOfInterest").hasClass('ui-spinner-input'))