目前我有一个输入文本字段,可能有也可能没有与该特定元素绑定的时间戳。在某些情况下,我需要完全删除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的实例。
答案 0 :(得分:1)
尝试:
if (typeof $( "#ElementOfInterest" ).spinner( "instance" ) !== 'undefined') {
$("#ElementOfInterest").timespinner("destroy");
}
答案 1 :(得分:1)
好$("#ElementOfInterest").timespinner !== undefined
只是检查是否定义了$().timespinner
,只要加载了插件就会这样。如何检查元素是否具有微调器添加的类。 if ($("#ElementOfInterest").hasClass('ui-spinner-input'))