Sie nicht wirklich deutlich machen, ob Sie eine Reihe von Ankern müssen verschiedene Zustände hinzufügen, oder ...?
Wenn Sie das tun, können Sie etwas tun Sie den entsprechenden Staatsnamen für jede Verbindung aufnehmen:
<a data-stateName="state_name">ADD STATE </a>
Und dann in JS, mit jQuery:
$(document).ready(function() {
$("a[data-stateName]").click(function() {
openbox_state($(this).attr("data-stateName"));
});
});
Dies entfernt die Inline JavaScript aus Ihrem HTML-Code und verwendet dann jQuery, um einen Klick-Handler nur an die Elemente <a>
zu binden, die über ein data-stateName
-Attribut verfügen. Der Handler erhält dann den Wert dieses Attributs, der an die openbox_state()
-Funktion übergeben wird.
Der Document Ready-Handler stellt sicher, dass die Anker-Klickbindung erst erfolgt, wenn das Dokument fertig ist, d. H. Nachdem die Elemente analysiert wurden und von JS aus zugegriffen werden kann. (Sie brauchen nicht ein fertiges Handler, wenn Sie Ihre JS in einem Skriptblock am Ende des Körperelements gesetzt.)
Sie könnten auch' $ (this) .data ('stateName') 'wenn Sie dies wünschen. –
@muistooshort - True nicht, weil ich '.data()' nur zum Abrufen von Werten verwenden möchte, die zuvor mit '.data()' gesetzt wurden, nicht für Attributwerte. In diesem Fall spielt es keine Rolle, aber ich mag den Weg '.data()' versucht aut Umwandlung des internen Typs, wenn HTML-Attribute abgerufen werden. – nnnnnn
Ich höre dich auf der "Software, die vorgibt, schlauer zu sein als es ist" -Teil, bevorzuge ehrliche und konsequente Dummheit :) –