Ich kann einfache Beispiele zum Laufen bringen, solange keine Masterseite involviert ist. Alles, was ich tun möchte, ist eine Schaltfläche klicken und haben es sagen "Hallo Welt" mit dem Javascript in einer .js-Datei, mit einer Master-Seite. Jede Hilfe sehr viel geschätzt :)
Antworten
Zu viele Anzeigen?Ich habe auch mit den einfachsten Beispielen angefangen und hatte kein Glück. Schließlich musste ich die jquery.js-Datei hinzufügen außerhalb de la <head>
Abschnitt der Musterseite. Das war die einzige Möglichkeit, wie ich in Firefox etwas zum Laufen bringen konnte (andere Browser habe ich noch nicht ausprobiert).
Ich musste auch die .js-Datei mit einer absoluten Adresse referenzieren. Ich bin mir nicht ganz sicher, was damit los ist.
Adam Lassek verknüpft mit jQuery-Selektoren, obwohl ich denke, dass es sich lohnt, explizit die Auswahl von Elementen durch ihre Klasse, im Gegensatz zu ihren id.
z.B. Anstelle von $("#myButton").click(function() { alert('button clicked'); });
verwenden Sie stattdessen $(".myButtonCssClass").click(function() { alert('button clicked'); });
und fügen Sie der Schaltfläche die Klasse hinzu:
<asp:Button ID="myButton" runat="server" Text="Submit" CssClass="myButtonCssClass" />
Dies hat den Vorteil, dass man sich nicht darum kümmern muss, ob zwei Steuerelement-IDs auf die gleiche Weise "enden", und dass man den gleichen jQuery-Code auf mehrere Steuerelemente gleichzeitig anwenden kann (mit der gleichen CSS-Klasse).
-
PROBLEM --> bei der Verwendung von Site.Master-Seiten wird den ID-Namen der Steuerelemente (für ASP-Steuerelemente) die ContentPlaceHolderID vorangestellt. (Beachten Sie, dass dies kein Problem für Nicht-ASP-Steuerelemente ist, da sie nicht "umgedeutet" werden, d. h. sie werden einfach wie geschrieben angezeigt).
-
LÖSUNGEN:
-
- Am einfachsten --> ClientIDMode="Static" zur Definition des Asp-Steuerelements hinzufügen (oder mit Eigenschaften festlegen) in der Asp-Seite
- Zu den Alternativen gehören:
-
- Hardcoding des ContentPlaceHolderID-Namens im js-Code z.B. "#ContentPlaceHolder1_controlName" - eek!!!!
-
- die <%= controlName.ClientID %> in der ASP-Seite zu verwenden und sie - dort - einer Variablen (oder einem Variablenobjekt) zuzuweisen. Die Variable (oder das Objekt in Punktnotation) kann dann in der externen js-Seite verwendet werden (HINWEIS: <%= controlName.ClientID %> kann nicht in externen js verwendet werden)
-
- Verwendung von CssClass mit einem eindeutigen (gleichen Namen wie die ID) in einer ASP-Seite und Bezugnahme auf das Steuerelement als ".controlName" anstelle von "#controlName"
-
- Verwendung des "[id$=_controlName]" anstelle von "#controlName" - dies beinhaltet eine kleine Suche und sucht nach einem Steuerelement, das mit dem eindeutigen Namen endet - auf diese Weise ist der Anfang irrelevant
-
- See previous answers
- Weitere Antworten anzeigen