Frage Aufruf der benutzerdefinierten Funktion mit Parametern


Ich definiere die Funktion func1 (); Ich möchte, dass es einige Parameter, dh

var func1(aaa, bbb){
//do something, anything!
};

dann möchte ich es später im doc so nennen:

$('#some_id').click(func1($this));

aber es funktioniert nicht.

Ich habe eine Weile damit herumgetüftelt, aber es ist sehr seltsam, wie jquery / javascript benutzerdefinierte Funktionen zumindest für mich handhabt. Kann mir some1 ein einfaches Code-Snippet liefern? Danke


6
2017-07-28 00:46


Ursprung


Antworten:


Wenn alles, was Sie passieren wollen, ist $(this), Sie brauchen den Parameter nicht, da er innerhalb der definierten Funktion verfügbar sein wird.

$('#some_id').click(func1);

Sie können jedoch Parameter wie folgt nicht hinzufügen:

$('#some_id').click(func1(param1, param2));

Dann haben Sie für Ihre Funktionsdefinition einfach

function func1() { }

Wenn Sie andere Parameter als $ (this) möchten, müssen Sie Folgendes tun:

$('#some_id').click(function () {
    func1(aaa, bbb); });

6
2017-07-28 01:13



Ich nehme an, du versuchst das sicherzustellen this verweist immer noch auf das Element, das das Ereignis empfangen hat.

Versuch es:  http://jsfiddle.net/jKM9s/

$('#some_id').click(function() {
    func1.call(this, 'somearg', 'somearg'); 
});

   // now "this" references the element when func1 is called
function func1(aaa, bbb){
    //do something, anything!
};

BEARBEITEN:

Wenn Sie nur auf das angeklickte Element verweisen wollten, dann sehen Sie @ phoefers erste Lösung.


5
2017-07-28 01:29



Es sollte sein

function func1(aaa, bbb)  { ... }

1
2017-07-28 00:50



Hier ist ein kurzes Beispiel:

Stellen Sie sicher, dass Sie Ihre Funktion mit definieren function. Wenn Sie es dann innerhalb von jQuery aufrufen möchten, Sie sollten eine Inline-Funktion verwenden click().

<div>Click Me!</div>
<div>Pick this one!</div>
<script type="text/javascript">   
function func1(aaa, bbb) 
{ 
    alert('You clicked the DIV that said: "' + aaa.innerHTML + '" and ' + bbb); 
};          
$('div').click(function ()
{
    func1(this, "that's ok.");
});
</script>        

1
2017-07-28 00:54



In Javascript können Sie keine Funktion zuweisen und gleichzeitig Argumente übergeben. Verwenden Sie eine anonyme Funktion ...

$('#some_id').click(function() {
  var arg1 = $(this);
  var arg2 = 'whatever';

  return func1(arg1, arg2);
});

Wenn der einzige Parameter, den Sie brauchen, ist this, weisen Sie die Funktionsreferenz zu ...

$('#some_id').click(func1);

0
2017-07-28 01:41



Du kannst es nicht so machen $('#some_id').click(func1($this)); durch .click(handler(eventObject)) Definition ... wenn du es so nennst, $this im func1($this) würde als erwartet werden eventObject.

Dafür könnten Sie verwenden .bind() und event.data.

Demo

beispielsweise..

function sum(event) {
   alert(event.data.x + event.data.y);
   // `this` here would refer to the element calling this function
   // for example, $(this).attr('id') would return `someID` if called below
}

nenn es als

$('#someID').bind('click',{x:4, y:5}, sum);

0
2017-07-28 01:21