div animate jquery jquery-ui user-interface widget progress-bar

animate - tooltip div jquery



Necesita saber si un widget jQuery UI se ha aplicado a un objeto DOM (5)

A partir de jQuery UI 1.11, los widgets se pueden probar directamente a través del método de instance :

var hasProgressbar = ($(element).progressbar("instance") !== undefined);

Documentación: http://api.jqueryui.com/jQuery.widget/#method-instance

Estoy usando jQuery y tengo algunas interacciones con una interfaz de usuario jQuery donde necesito obtener opciones. Sin embargo, existe la posibilidad de que la función jQuery UI aún no se haya aplicado al objeto DOM. Me aparece un error de JavaScript ahora cuando accedo a una opción.

Tengo un objeto DOM que tiene asociada la http://docs.jquery.com/UI/Progressbar progreso ( http://docs.jquery.com/UI/Progressbar ) (tal vez). En otro hilo, estoy tratando de acceder a las opciones usando domObj.progressbar("option", "value") .

¿Cómo determino si domObj tiene una domObj progressbar adjunta?


De acuerdo con esta discusión , la forma recomendada para detectar si un widget se ha procesado en un elemento es el siguiente:

var hasWidget = $(''selector'').is('':ui-widgetname'');


El objeto DOM recibirá una clase CSS adicional añadida: "ui-progressbar". Si ve el código fuente en http://docs.jquery.com/UI/Progressbar entonces puede ver un div con id = barra de progreso y nada más, pero si usa Firebug y hace clic en el elemento, puede ver que tiene algunos más clasificados adicional.

Editado: creo que la solución de @ jamiebarrow es la más correcta aquí.


Prefiero usar hasOwnProperty en cualquier objeto en JavaScript, ya que devuelve un valor booleano cada vez.

var hasWidget = $( "selector-here" ).data().hasOwnProperty( "widget-name-here" ); if ( hasWidget ) { // Put your awesome code here. }

Que en mi humilde opinión es un poco mejor que comprobar nulo; ¿Qué pasa si cambia a indefinido, que, también IMO es lo que debería devolver.


Puede acceder al objeto de barra de progreso en el elemento haciendo:

$("#myid").data("progressbar")

Entonces para usar esto:

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()); }