2017-06-24 3 views
0

Ich möchte das form.find Element an meine Funktion AvailabilityChecker übergeben. Ich habe versucht, die Elemente Attribut ohne Erfolg zu bekommen. Was ist los mit dir?Wie übergebe ich ein Element an eine Funktion

var AvailabilityChecker = function (ev, el) { 
     console.log("arguments: ",Array.prototype.slice.call(arguments)); //gives: arguments: Array [ Object ] 
     console.log(ev); 
     console.log("AvailabilityChecker: ",el.attr('AvailabilityChecker') //gives Typeerror 
} 


form.find("input[AvailabilityChecker]").keyup(AvailabilityChecker.bind(this)); 
+0

Bindung an 'this' Referenz bekommen, so wie du bist, ist ein völlig anderen Kontext verwenden. Warum nicht einfach '.keyup (AvailabilityChecker)' verwenden, dann wird 'this' in dieser Funktion Ihre passenden Elemente sein. Da es jQuery ist, können Sie 'this.first()' aufrufen, da es wahrscheinlich einen Satz abruft. –

+0

this.attr ('AvailabilityChecker') gibt: TypeError: this.attr ist keine Funktion – hamburger

+0

weil 'this' nicht jQuery .... – epascarello

Antwort

2

Die el wird nicht auf magische Weise als Argument angehängt ein Attribut sein. Also musst du es anders machen. Und mit .bind() ist ändert sich auch, wie Sie das Element

var AvailabilityChecker = function (ev) { 
 
    console.log("1-DOM", ev.target.getAttribute("AvailabilityChecker")) 
 
    console.log("1-JQ",$(ev.target).attr("AvailabilityChecker")) 
 
} 
 

 
$("input[AvailabilityChecker]").keyup(AvailabilityChecker.bind(this)); 
 

 
var AvailabilityChecker2 = function (ev) { 
 
    console.log("2-DOM", this.getAttribute("AvailabilityChecker")) 
 
    console.log("2-JQ",$(this).attr("AvailabilityChecker")) 
 
} 
 

 
$("input[AvailabilityChecker]").keyup(AvailabilityChecker2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input AvailabilityChecker="aaaa">

Verwandte Themen