我使用jQuery和有一个jQuery UI,我需要得到选项的一些互动。 不过有该jQuery UI的功能尚未应用到DOM对象的可能性。 我得到一个JavaScript错误,现在,当我访问一个选项。
我有一个具有进度(DOM对象http://docs.jquery.com/UI/Progressbar )连接到它(也许)。 在另一个线程,我想访问使用该选项domObj.progressbar("option", "value")
如何确定如果domObj
有一个progressbar
连接?
DOM对象将获得附加了一个额外的CSS类:“UI的进度”。 如果你查看源文件上http://docs.jquery.com/UI/Progressbar然后就可以看到使用id =进度,仅此而已一个div,但如果你使用Firebug并单击该元素,你可以看到它有几个归类添加。
编辑:我认为,@ jamiebarrow的解决方案是在这里更正确的一个。
你可以通过做访问进度条对象的元素:
$("#myid").data("progressbar")
因此,使用这样的:
var progressBar = $("#myid").data("progressbar");
if ( progressBar == null ) {
// handle case when no progressbar is setup for my selector
} else {
alert("The value is: " + progressBar.value());
}
根据这一讨论 ,来检测的推荐方法,如果窗口小部件已呈现的元素如下:
var hasWidget = $('selector').is(':ui-widgetname');
在jQuery UI 1.11,窗口小部件可以直接测试用于经由所述instance
方法:
var hasProgressbar = ($(element).progressbar("instance") !== undefined);
文档: http://api.jqueryui.com/jQuery.widget/#method-instance
我更喜欢使用hasOwnProperty在JavaScript中的任何对象,因为它每次都返回一个布尔值。
var hasWidget = $( "selector-here" ).data().hasOwnProperty( "widget-name-here" );
if ( hasWidget )
{
// Put your awesome code here.
}
恕我直言,这比检查空好一点; 如果它切换到不确定的,这也海事组织它应该返回什么。