2013-01-04 4 views
5

Ich einige Variablen kommen in meine Funktion.Gibt es zu prüfen, ob eine js-Variable eine d3-Auswahl ist?

Wenn die erste von ihnen eine d3-Auswahl ist, möchte ich sie verwenden, sonst möchte ich eine Standardauswahl verwenden.

Wie überprüfe ich, ob eine Variable eine d3-Auswahl ist oder nicht?

+1

In der Regel verwenden Menschen dafür Ducktyping. I.e. Überprüfen Sie, ob die Variable die von Ihnen benötigten Eigenschaften hat, und nehmen Sie dann an, dass das Objekt das Objekt ist, nach dem Sie suchen, wenn es bestimmte Eigenschaften hat. – ThiefMaster

+0

Nun, die eigentliche Rebinding-Methode ist abstrakt, da ich diesen Code nicht immer wieder wiederholen möchte (eine dieser Funktionen, die eine Funktion zurückgibt). Ich überprüfe derzeit nach 'd3SelectorOrNot.selectAll', aber das scheint ziemlich gimpy. Die meisten anderen Bibliotheken, mit denen ich gearbeitet habe, stellen eine 'isMyLibraryObject()' Funktion zur Verfügung. Ich hoffe, das d3 auch, ich kann es einfach nicht finden. –

Antwort

9

Um zu überprüfen, ob die Variable sel ein d3.selection ist:

var isselection = sel instanceof d3.selection; 
1

Bitte beachten Sie, dass die oben genannte Antwort für (sel instanceof d3.selection), die in der Dokumentation zur Verfügung gestellt: https://github.com/mbostock/d3/wiki/Selections#d3_selection wird in IE9 nicht funktionieren.

Dies wird hier erklärt: https://github.com/mbostock/d3/issues/851

Es ist ein Problem mit IE9 und wird nicht in D3 festgelegt werden. Eine Problemumgehung kann in diesem Commit gefunden werden: https://github.com/palantir/plottable/pull/637

mit (typeof sel[0] !== "string") stattdessen. Dies ist nicht so klar, aber es hängt davon ab, ob Sie IE9 unterstützen müssen oder nicht.

Verwandte Themen