当前,我有一个输入文本字段,该文本字段可能与该特定元素绑定在一起,也可能没有。在某些情况下,我需要完全删除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'))

09-28 06:28