2014-03-19 117 views
0

我的應用程序基於100個文件。這個「邏輯」決定哪一個將被包含在某個顯示中。如何判斷一個元素是否是jquery-ui小部件?

在其中許多人中,我有jquery-ui-widgets(對於這個問題,我將假設他們都是tabs)。
其中一些是自定義的,其他則不是。
自定義選項卡在完整輸出的開頭(在html標題中)中分別設置。 其他設置稍後全局設置。

HTML

<div class="some-element">... 
<div class="some-other-element">... 
<div class="tabs">... 
<div class="tabs">... 
<div class="tabs">... 
<div class="tabs">... 

的JavaScript

$(".tabs .some-element").tabs({/*some settings*/}); 
$(".tabs .some-other-element").tabs({/*some other settings*/}); 
$(".tabs").tabs(); // no settings 

我的問題是:我想最後javavscript調用排除,已經初始化元素。

如何判斷對象是否已設置?

+0

難道你不能檢查它的類嗎? – gdoron

+0

沒有,因爲它們都是'.tabs',其他都是未知的,甚至可以是隨機的。 – yossi

回答

2

由於@mhu狀態,您可以檢查控件的名稱下的數據值。小部件框架還設置了一個匹配小部件本身名稱的選擇器。這將允許您測試的項目是一個小部件:

if ($(testElement).is(":ui-tabs")) { 
    // testElement is a ui-tabs widget 
} 

這實際上是由它只能用來測試單個項目的數據屬性的支持。選擇器可以使用如下:

$(".tabs:ui-tabs").each(function() { 
    // every ".tabs" which is a widget will get a call. 
}); 
+0

以及如何使其適應返回未設置的對象?因爲它是我需要的 – yossi

+1

只需使用':not()'選擇器:'$(「。tabs:not(:ui-tabs)」)'。 – squid314

1

您可以檢查數據(下面的例子是jQueryUI的1.9+):

if ($(".tabs").data("ui-tabs")) { 
    // ui tab 
} 
+0

謝謝。這將工作。 – yossi

+0

如果$(「。tabs」)'返回一個對象數組,它究竟會如何工作? –

+0

我將使用'each()'並且只會初始化false結果 – yossi

相關問題