2012-11-15 6 views
10

Ich möchte einen Wert an eine Jquery-Funktion übergeben. Unten ist der JavaScript-Beispielcode. Ich möchte diese JavaScript-Funktion in eine jquery-Funktion konvertieren. Wie kann ich den Namen des Staates in eine jQuery onclick Funktion übergeben?Wie übergeben Sie Argumente in die JQuery-Funktion?

<a onclick="showState('state_name')">ADD STATE </a> 

function showState(state_name){ 
openbox_state(state_name); 
} 

mir bitte helfen.

Antwort

12

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.)

+0

Sie könnten auch' $ (this) .data ('stateName') 'wenn Sie dies wünschen. –

+0

@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

+0

Ich höre dich auf der "Software, die vorgibt, schlauer zu sein als es ist" -Teil, bevorzuge ehrliche und konsequente Dummheit :) –

1

So:

$('#MyID').click(function() { 

     var StateName = $(this).text(); 
     showState(StateName);  
    }); 

Und dann für die HTML, könnten Sie etwas ID so:

<a id="MyID">ADD STATE </a> 

Oder, wenn Sie viele Staaten haben (was ich davon ausgehen, ist das, was Sie‘ re versucht dann zu tun) Sie den Link per CSS Klasse wie folgt verweisen konnte:

<a class="StateSelector">ADD STATE </a> 

Und dann jquery Code beco mes:

$('.StateSelector').click(function() { 

     var StateName = $(this).text(); 
     showState(StateName);   
}); 

Um das Event-Handling zu verdrahten, können Sie den jQuery-Code im Dokument-Ready-Funktion so:

$(document).ready(function() { 

    $('.StateSelector').click(function() { 

      var StateName = $(this).text(); 
      showState(StateName);   
    }); 
}); 
+0

Können Sie bitte den entsprechenden Code für diese Zeile angeben, bitte ADD STATE sjkon

+0

Es gibt keine Notwendigkeit für onclick = "showState (...), jquery behandelt das Ereignis für Sie. Vielleicht möchten Sie einige ID in Ihrem HTML zum Verweis auf den Link, siehe Bearbeiten – frenchie

+0

ok Vielen Dank – sjkon

0
<a>Montana</a> 

$('a').on('click', function(){ 
    var state = this.text ; // OR $(this).text(); OR $(this).html(); 
    showState(state); 
}); 
1

Wenn Sie mehr a mit verschiedenen Argumenten wie diese haben .

<a onclick="showState('Delhi')">ADD STATE</a> 
<a onclick="showState('Punjab')">ADD STATE</a> 
<a onclick="showState('Gujrat')">ADD STATE</a> 

function showState(state_name){ 
openbox_state(state_name); 
} 

dann können Sie benutzerdefinierte Attribute verwenden wie diese

<a state="Delhi">ADD STATE</a> 
<a state="Punjab">ADD STATE</a> 
<a state="Gujrat">ADD STATE</a> 

$('a').click(function() { 
    var StateName = $(this).attr("state"); 
    openbox_state(StateName); 
}); 
Verwandte Themen