【问题标题】:TimeSpinner Check If Undefined Not WorkingTimeSpinner 检查是否未定义不起作用
【发布时间】: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


【解决方案1】:

$("#ElementOfInterest").timespinner !== undefined 只是检查是否定义了 $().timespinner,只要加载了插件,它就会被定义。如何检查元素是否具有微调器添加的类。 if ($("#ElementOfInterest").hasClass('ui-spinner-input'))

【讨论】:

    【解决方案2】:

    试试:

    if (typeof $( "#ElementOfInterest" ).spinner( "instance" ) !== 'undefined') {
        $("#ElementOfInterest").timespinner("destroy");
    }
    

    参考:http://api.jqueryui.com/spinner/#method-instance

    【讨论】:

    • 我试过了,没用。我相信我之前尝试过这个没有任何体面的结果。我用收到的异常更新了我的问题。
    • 请检查代码执行时是否加载了jquery和jquery ui
    猜你喜欢
    • 2016-07-02
    • 2011-08-15
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    相关资源
    最近更新 更多