2014-10-17 61 views
0

目前我有一個輸入文本字段,可能有也可能沒有與該特定元素綁定的timespinner。在某些情況下,我需要完全刪除timespinner功能(而不是禁用它),以便在頁面上正確顯示它。TimeSpinner檢查是否未定義不工作

目前,我要檢查的代碼,如果該元素上存在timespinner如下:

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

這工作得很好,當頁面第一次加載,但是,這將引發以下異常:

無法在初始化之前調用時間片上的方法;試圖 調用方法「破壞」

出於某種原因,在檢查undefined通行證,並試圖不存在的元素上timespinner。

所以我的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")但我只是回來:

不確定是不是方法

所以它看起來像檢查的一個實例一個時間記錄器沒有實現。

+1

「這引發異常」。請提供錯誤信息? – 2014-10-17 15:59:10

+0

添加了正在更新中引發的異常。 – Exitium 2014-10-17 16:01:48

回答

1

那麼,如果$().timespinner定義$("#ElementOfInterest").timespinner !== undefined只檢查,這將是隻要插件加載。如何檢查元素是否具有微調器添加的類。 if ($("#ElementOfInterest").hasClass('ui-spinner-input'))

1

嘗試:

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

裁判:http://api.jqueryui.com/spinner/#method-instance

+0

我試過了,它不起作用。我相信我之前嘗試過,沒有任何體面的結果。我用我收到的例外更新了我的問題。 – Exitium 2014-10-17 17:01:35

+0

請檢查是否在代碼執行時加載了jquery和jquery ui – 2014-10-18 07:51:14