snap Sie müssen wissen, ob ein jQuery-UI-Widget auf ein DOM-Objekt angewendet wurde




jquery widget example (4)

Ab jQuery UI 1.11 können Widgets direkt über die instance getestet werden:

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

Dokumentation: http://api.jqueryui.com/jQuery.widget/#method-instance

Ich benutze jQuery und habe einige Interaktionen mit einer jQuery UI, wo ich Optionen bekommen muss. Es besteht jedoch die Möglichkeit, dass die jQuery UI-Funktion noch nicht auf das DOM-Objekt angewendet wurde. Ich erhalte jetzt einen JavaScript-Fehler, wenn ich auf eine Option zugreife.

Ich habe ein DOM-Objekt, das die Fortschrittsleiste ( http://docs.jquery.com/UI/Progressbar ) angehängt hat (vielleicht). In einem anderen Thread versuche ich mit domObj.progressbar("option", "value") auf die Optionen domObj.progressbar("option", "value") .

Wie domObj ich fest, ob an dieses domObj eine progressbar angehängt ist?


Ich bevorzuge die Verwendung von hasOwnProperty für jedes Objekt in JavaScript, da jedes Mal ein Boolean zurückgegeben wird.

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

Was IMHO ist ein wenig besser als Null überprüfen; Was ist, wenn es zu undefiniert wechselt, was IMO ist, was es zurückgeben soll.


Sie können auf das Fortschrittsbalkenobjekt auf dem Element zugreifen, indem Sie Folgendes tun:

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

Also um das zu benutzen:

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

Das DOM-Objekt wird an eine zusätzliche CSS-Klasse angehängt: "ui-progressbar". Wenn Sie Quelle auf http://docs.jquery.com/UI/Progressbar , können Sie ein div mit id = progressbar sehen und nichts mehr, aber wenn Sie Firebug verwenden und auf das Element klicken, das Sie sehen können, hat es ein paar mehr klassifiziert hinzugefügt.

Bearbeitet: Ich denke, dass @ Jamiebarrows Lösung hier die korrektere ist.







progress-bar