現在、特定の要素に関連付けられているタイムスピナーがある場合とない場合がある入力テキスト フィールドがあります。場合によっては、ページに適切に表示するために、(無効にするのではなく) タイムスピナー機能を完全に削除する必要があります。
現在、次のように要素にタイムスピナーが存在するかどうかを確認するコードがあります。
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 はメソッドではありません
そのため、タイムスピナーのインスタンスのチェックが実装されていないようです。