2016-04-05 3 views
0

Ich versuche, Text von Nummer Elementen zu erhalten und mit in Reihe setzen jquery.but diesen Fehler zu erhalten, dass:Wie man Text der Zahlelemente erhält und in Array mit jquery setzt?

Uncaught TypeError: aTags[i].parent is not a function.

Wie dieses Problem zu lösen?

$('#flight-stops-filter ul li a').click(function() { 
    var aTags=$('#flight-stops-filter ul li a'); 
    stops = []; 
    for (var i = 0; i < aTags.length; i++) { 
     if (aTags[i].parent("li").hasClass('active')) { 
      alert(this.text); 
      stops.push(this.text.substr(0, 1)); 
     } 
    } 

}); 
+1

'aTags [i]' wird DOM-Element wickeln Sie es mit jquery wrapper..instead von 'aTags [i] .parent (. . 'use' $ (aTags [i]). parent (.. ' –

+1

Es sieht aus wie' DOM 'nicht' jQ' eingepacktes Element..use '$ (aTags [i])' – Rayon

+0

Oder du solltest mit 'var spielen aTags = $ ('# flight-stops-filter ul li'); 'und dann in loop,' $ (this) ' – Rayon

Antwort

0

wickeln Sie die Variable in einem jQuery-Objekt:

if ($(aTags[i]).parent("li").hasClass('active')) { 
      alert(this.text); 
      stops.push(this.text.substr(0, 1)); 
     } 

oder:

$('#flight-stops-filter ul li a').click(function() { 
    var lis=$('#flight-stops-filter ul li.active'); 
    if (lis.length > 0) { 
      alert(this.text); 
} 



} 
+1

macht Null Sinn es zu wickeln, wenn Sie das Element verweisen den richtigen Weg zu starten – epascarello

+0

sein Code macht keinen Sinn – madalinivascu

1

aTags ist ein Jquery-Objekt mit darin enthaltenen reinen DOM-Objekten. Daher können Sie keine jquery-Methoden für reine DOM-Objekte aufrufen, ohne sie in jQuery einzufügen.

Ersetzen Sie Ihre for-Schleife mit

aTags.each(function(){ 
    if($(this).parent("li").hasClass('active')) 
    { 
     alert(this.text); 
     stops.push(this.text.substr(0, 1)); 
    } 
    }); 

Wie in jquery learning documentation hier vorgeschlagen, anstatt den Zugriff über Konsolen-Notation Sie es über eq Methode von jquery zugreifen müssen.

aTags.eq(0);//for first DOM object wrapped inside a jquery object 

Für das DOM-Objekt Zugriff auf

aTags.get(0) ;//same as aTags[0]; 
+0

was passiert, wenn er mehrere Auswahlen hat? – madalinivascu

+1

@madalinivascu hat dich nicht bekommen ... kannst du aufwendige 'multiple selects'? – gurvinder372

2

Wenn Sie Klammer-Notation

aTags[i].parent("li") 

es gibt einen DOM-Knoten

Sie wollen eq(index)

verwenden

Jetzt innerhalb der Schleife die Verwendung von this.text kann auch falsch sein, da es keine text Eigenschaft in DOM gibt.

Also, was Sie wollen wahrscheinlich ist

$('#flight-stops-filter ul li a').click(function() { 
    var aTags=$('#flight-stops-filter ul li a'); 
    stops = []; 
    for (var i = 0; i < aTags.length; i++) { 
     var li = aTags.eq(i).parent("li"); 
     if (li.hasClass('active')) { 
      console.log(li.text()); 
      stops.push(li.text().substr(0, 1)); 
     } 
    } 
}); 
0

Die Ursache des Fehlers ist gut erklärt Von anderen. Diese Alternative ist gerade nach vorne beide und es gibt keine Chance, Sie in diesem Fehler ausgeführt wird:

var links = $('#flight-stops-filter ul li a'); 
links.click(function() { 
    stops = links.parent('.active').find('a').map(function() { 
     return $(this).text().substr(0,1); 
    }).get(); 
}); 
Verwandte Themen