2016-05-20 4 views
1

jeder, ich ein Anfänger über js bin, so habe ich eine Frage, Code:Wie zu Listener-Ereignis in Jquery?

var formDate=$("#formStudentInfo").serializeArray(); 
    var inputArray=[]; 

    for (var i=0;i<formDate.length;i++) { 

     var element=$('#form_'+formDate[i]['name']); 
     inputArray.push(element); 
     console.log(inputArray) 
     inputArray[i].on('click',function(){ 
      console.log(inputArray[0]['name']); 
     }) 
    } 

Ich habe ein Formular Name ist # formStudentInfo, gibt es zwei Eingangs in dieser Form Eingangsname "formular_name" und "form_userName", Wie erhalte ich den Namen der Eingabe, wenn ich auf die Eingabe klicke? Danke allen

+0

eine Geige Machen Sie bitte – Patrick2607

+0

ich erinnere mich AS3 tun es „Tasten [i] .addEventListener (MouseEvent.CLICK , clickHandler); " , wie in js zu tun? – glig

+0

Verwenden Sie 'onclick' Ereignis http://www.w3schools.com/jsref/event_onclick.asp in html '' –

Antwort

1

Sie sollten die Variable für den Schleifenzähler nicht innerhalb des asynchronen Callback-Handlers verwenden.

Der Wert i ist nicht identisch, wenn auf das Element geklickt wird. da zu dieser Zeit wird es immer gleich formDate.length sein, da, wenn das Element angeklickt wird, diese Schleife bereits ausgeführt wurde.

ersetzen

inputArray[i].on('click',function(){ 
    console.log(inputArray[0]['name']); 
}) 

mit

element.on('click',function(){ 
    console.log($(this).attr('name')); //using the reference to current element using $(this) 
}) 

oder einfach

element.click(function(){ //directly using the click method rather than delegation 
    console.log($(this).attr('name')); //using the reference to current element using $(this) 
})