JavaScript onclick wird nach 1. Klick zu onmouseover / Frage zu Funktion

  • Ersteller Ersteller Mr. Snoot
  • Erstellt am Erstellt am
M

Mr. Snoot

Gast
Klingt komisch, ist aber so :D


Ich hab folgenden Link:
<a href="javascript:void(0)" onclick="preisverlauf('trend123456,'ssd')">

Bei Klick wird folgende Funktion aufgerufen:
PHP:
function preisverlauf(artikel, typ)
{
  $(document).ready(function()
  {
    $("#" + artikel).load("preisverlauf.php",{"value[]": [artikel, typ]});
  });
}

Allerdings wird diese Funktion nach dem ersten Klick fortan auch bei einem Mouseover aufgerufen. Wieso? Ist nicht weiter schlimm, mich würds nur interessieren.



Und noch eine Frage zur Funktion: ich hab das function preisverlauf() selbst drum herumgebaut. Kann ich jetzt das $(document).ready(function() {}); gefahrlos löschen? Es scheint zu laufen; aber nicht, dass das irgendwie Nebenwirkungen hat, die ich im Moment nicht sehe ;)

Vielleicht könnte mir auch jemand sagen, wozu das genau dient.
 
Ich kann dir die Frage nach dem Mouseover zwar nicht beantworten, verstehe aber nicht wieso du du in der Funktion noch das ready Event bindest, denn wenn die Funktion ausgeführt wird, dann wurde das DOM sowieso schon geladen - oder irre ich mich hier?

Du solltest es also normalerweise auch weglassen können. Vllt. ist das auch der Grund für das Mouseover Problem.
 
Also das Problem besteht so oder so - hatte ich schon probiert.


Die Funktion sah ursprünglich so aus:
PHP:
$(document).ready(function()
{
  $("#select").change(function()
  {
    var wert=$(this).children('option:selected').val();
    $("#span").load("load.php",{value: wert});
  });
});
Das funktioniert allerdings nur problemlos bei Auswahllisten. Bei Eingabefeldern (mit change oder blur bspw.) oder jetzt bei dem Link, hat es immer irgendwo gehakt.

Daher hab ich schon mal in der Funktion das change(function() rausgeschmissen und den Eventhandler eben direkt im Link/Eingabefeld angegeben (<input onblur="">):
PHP:
$(document).ready(function()
{
    var wert=$("#select").val();
    $("#span").load("load.php",{value: wert});
});

Dafür musste ich jetzt eben den Funktionsaufruf function xyz() drumherumbauen.


Ich bin leider mit JS/Ajax nicht so bewandert - nur gut im Abändern vorhandener Scripte ;) - deswegen weiß ich leider nicht, was genau das $(document).ready(function() überhaupt macht.
 
Das ready Event wird von jQuery ausgelöst wenn der DOM Tree vollständig geladen wurde (vor Bilder und sonstigem Zeug = vor window.onload).

Siehe http://docs.jquery.com/Events/ready für mehr Infos.

Du schreibst vor deine Selektoren immer ein #. Ist das so gewollt bzw. gibts die IDs auch wirklich?

Sonst bei Eingabefeldern einfach $("input").change(function() { });
 
Aja, danke dir.


Die IDs gibts wirklich, das mit # war auch von Beginn an so.

Wie gesagt, ich wandel das immer blos ab. Ich finde ständig neue Einsatzgebiete für diese Funktion - ist irgendwie die eierlegende Wollmilchsau :)


Ich glaube, ich sollte mich wirklich mal näher damit beschäftigen, in letzter Zeit brauche ich das öfter.
 
Zurück
Oben