jQuery/JavaScript - Ereignis.Ziel.id auf Firefox
Habe ich ein kurzes script geschrieben, das funktioniert gut in Chrome:
function updateSentence(){
$(document).ready(function() {
t = event.target.id;
$("#S"+t).html($("#"+t).val());
});
}
Jedoch im Firefox-Ereignis nicht definiert. Ich habe festgestellt, dass einige ähnliche Fragen, die vorgeschlagen, dass die Veranstaltung benötigt werden, übergeben, die als parameter an die Funktion:
function updateSentence(event){
$(document).ready(function(event) {
t = event.target.id;
$("#S"+t).html($("#"+t).val());
});
}
Doch, für mich ist diese Lösung nicht beheben, das Firefox-problem, und es bricht tatsächlich, wie es funktioniert in Chrome. In Chrom, landet es zu sagen, dass event.target
ist nicht definiert, wenn diese übergeben werden.
Was mache ich falsch?
Nach Erhalt ein paar Kommentare, die ich erkannt habe, wie ich dachte über jQuery im Allgemeinen falsch war. Ich wollte nicht $(document).ready
genannt, bei jedem update des Satzes. Die Reinigung der Funktion mit diesem wissen landete ich mit:
function updateSentence(){
t = event.target.id;
$("#S"+t).html($("#"+t).val());
}
Diese immer noch korrekt aktualisiert den Satz in Chrom, aber target
weiterhin undefiniert in Firefox. Was muss ich tun, um dies in Firefox? Und bin ich eigentlich noch etwas grundlegend falsch an jQuery?
Auch, um eine Frage zu beantworten in den Kommentaren, die Veranstaltung, die ich bin auf der Suche nach der onchange
Ereignis, das ausgelöst updateSentence()
. Dies sollte aufgerufen werden, wenn eine select - /text-Feld geändert werden.
(Ich bin noch neu in jQuery und JavaScript im Allgemeinen, und ich bin sicher, ich bin nur so ein einfacher Fehler.)
Fand ich meine Antwort. Ich werde in ein paar Stunden, wenn die Website ermöglicht mir zu.
$(document).ready
sendet jQuery sich als argument - es ist nicht ein Ziel-element.Ich glaube nicht, läuft das (Dokument).bereit, die innerhalb einer anderen Funktion ist eine gute Idee. Es soll einmal ausführen, auf Seite 'bereit'. Wenn es nach diesem Ereignis wird es sich nicht handeln, wie Sie es wollen.
Ihre Nutzung des 'jedoch in Firefox" lässt vermuten, dass in einem anderen browser, Sie sind immer ein Ergebnis von irgendwo. Sollten Sie wirklich nicht sein. Nicht mit diesem script.
Ah, so scheint es mein problem ist, mein Verständnis für die Grundlagen von JQuery. Ich werde sehen, in wie die Funktion setup im Allgemeinen erst dann. Danke!!!
kannst du mehr code/html-basierend auf, Wann und warum diese genannt wird? In Ihrem update haben Sie
event
, aber nirgendwo definiert. Wo ist diese her? Wie ist updateSentence
aufgerufen wird?
InformationsquelleAutor golmschenk | 2012-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, sehr gut. Wenn Sie überdenken, wie Sie es Tat dies mehr Sinn macht.
Trennen Sie Ihre Bindung aus Ihrer Funktion, und das ist die halbe Miete mit, was Sie tun.
Und darüber hinaus ist dies einer der Fälle, würde ich vorschlagen, nicht auch eine sekundäre Funktion. In einigen Fällen, was Sie tun möchten, ist einfach genug, dass es schwer zu rechtfertigen, dass eine Funktion aufrufen, andere als das, was Sie tun, auf die binden.
Werden Sie feststellen, in beiden Fällen die Notwendigkeit für
event
ist nicht notwendig. Allerdings ist es auch für FF, wie es sein wird, übergeben Sie als argument n (function(event)
).Den Grund Ihrer 'Ziel' ist nicht definiert in deinem code für FF, weil FF nicht schnappen Sie sich die
event
aus der Luft wie die meisten Browser. Also, wenn Sie nicht Ihre setup-code, um zu beseitigen die Notwendigkeit für dieevent
oder übergeben Sie es im wie in meinem Beispiel, können Sie finden es überwindow.event
.InformationsquelleAutor williambq
Nachdem man das berücksichtigt, was bereits erwähnt wurde in den obigen Kommentaren und dem Lesen in das, was ich Tat, war ein bisschen mehr, fand ich die Antwort auf meine Frage. Zuerst war ich fälschlicherweise mit einem
$(document).ready
rufen Sie jedes mal die Funktion aufgerufen wurde. Weiter, mein Verständnis davon, wie die ID an die Funktion übergeben, scheint falsch zu sein. Es scheint, dass es nicht passiert automatisch, sondern muss manuell durchgeführt werden. Daher meine anfängliche Verwirrung darüber, warum die anderen Kommentatoren waren verwirrt durch meine Frage. In jedem Fall, zu wissen, diese Dinge, ich fand meine Antwort in einer Kombination von zwei anderen Fragen beantwortet. Sie finden in diesen beiden Stack-Überlauf Fragen:Immer die ID des Elements, das ein Ereignis ausgelöst
JavaScript - onClick die ID des angeklickten button
Ich bin sicher, ich bin noch zu sagen, etwas faul in dieser Erklärung, aber ich werde lernen, mehr in Kürze.
InformationsquelleAutor golmschenk