2016-06-21 20 views
0

Ich versuche, den Wert eines Eingabefeldes basierend auf dem Klick-Ereignis auf einer Liste festzulegen. Ich verwende $("#modifyText2").val(), um den Wert des Eingabefeldes zu setzen, und es funktioniert. Aber ich kann nicht den Text der div.CompanyNamejQuery erhalten Wert von Kind und Wert von Eingabefeld

.CompanyName ist ein Kind der .shop_data

Was ich versucht habe:

$("#shops_output").on("click", ".shop_data", function() { 
    $("#modifyText2").val(this.children(".CompanyName").text); 
}); 
+2

'this.children (". CompanyName "). Text()' –

+0

Auch this.children (". CompanyName") [0] .text() 'wenn es mehrere Kinder mit derselben Klasse gibt – SarathChandra

+0

Was Sie Versuchen Sie es mit einem Blick in die Browserkonsole, um den aufgetretenen Fehler besser zu verstehen und die Fehlermeldung zu teilen, damit jeder das Problem besser identifizieren kann. – SarathChandra

Antwort

1

Es ist, weil .children() eine jQuery-Funktion ist.

Daher müssen Sie $(this) anstelle der plain ol 'this verwenden, da keine children Funktion an das normale Javascript-Objekt angefügt ist.

Wrapping this in der jQuery $ Funktion ist, was alle von jQuery zur Verfügung gestellten zusätzlichen Methoden hinzugefügt.

$("#shops_output").on("click", ".shop_data", function() { 
    $("#modifyText2").val($(this).children(".CompanyName").text()); 
}); 

Im Einzelnen: $(this).children(".CompanyName").text()

Auch dies funktioniert nur, wenn nur ein Kind abgestimmt ist. Wenn mehrere ist, wie von anderen erwähnt, müssen Sie Folgendes tun:

$($(this).children(".CompanyName")[0]).text() 

// or 

$(this).children(".CompanyName").eq(0).text() 
+0

Es ist nahe zu arbeiten. Bitte sehen Sie sich die Demo hier an: http://underudvikling.dk/ajax/eksempler/ajax/index.php - Klicken Sie auf Suche und wählen Sie einen der Radioknöpfe aus. Es ändert mein Eingabefeld, aber mit nichts anstelle des Wertes ... – Dyvel

+0

Ein DIV zu einem SPAN geändert und jetzt funktioniert es gut :-) Danke! – Dyvel

0

Oder im jQuery Weg $(this).find('.CompanyName').eq(0).html(), wenn der Inhalt von „.CompanyName“ ist nur Text.

Verwandte Themen