Ich bin relativ neu in der Web-Entwicklung, also bitte tragen Sie mit mir. So habe ich eine for-Schleife, die dynamisch Optionen für ein Dropdown-Menü mit jQuery generieren wird. Ich habe einen Ereignis-Listener speziell für dynamisch erstellte Schaltflächen und möchte einfach das Attribut "value" von der ausgewählten Option abrufen. Ich spreche nicht über .val, ich spreche über das Attribut 'value', das ich während des For-Loop-Prozesses an die Schaltfläche angefügt habe.Auswählen von Werten aus dynamisch generierten Drop-Down-Optionen
Einige Kontext: Ich mache Ajax Anrufe an die NewsApi (siehe: https://newsapi.org/) und ich bevölke die Dropdown-Menü mit Optionen von Online-Zeitungen zur Auswahl. Das Attribut 'value' speichert den Schlüssel 'id' aus dem Quellenobjekt, das im Callback zurückgegeben wird.
var newSource = $('<option>');
newSource.addClass('dropdown-item');
newSource.attr('name',i);
newSource.attr('href', '#');
newSource.attr('value', source);
newSource.text(sourceName);
wie folgt aus:
var sourceName;
var attr;
var title;
var description;
var url;
var source = 'engadget';
var queryURL = "https://newsapi.org/v1/articles?source="+source+"&apiKey=5d9f7c67d4384f35bd73aa91efca8a73";
var attr;
var title;
var description;
var url;
const length = 60;
///////////////////////////////////////////////////////////////////
//getting the sources from the api to
//be used in subsequent ajax calls
$.ajax({
url:"https://newsapi.org/v1/sources?language=en",
method: "GET"
}).done(function(response) {
console.log(response);
console.log(response.sources.length);
for(var i = 0; i < response.sources.length; i++){
\t console.log(response.sources[i].id);
\t console.log(response.sources[i].name);
\t console.log("======================");
\t // <a class="dropdown-item" href="#"></a>
\t // <a class="dropdown-item" href="#"></a>
\t // <a class="dropdown-item" href="#"></a>
\t source = response.sources[i].id;
\t sourceName = response.sources[i].name;
\t var newSource = $('<option>');
\t newSource.addClass('dropdown-item');
\t newSource.attr('name',i);
\t newSource.attr('href', '#');
\t newSource.attr('value', source);
\t newSource.text(sourceName);
\t $('.dropdown-menu').append(newSource);
}
});
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
$(document).on('click', 'option:selected', function(){
source = $('option:selected').text();
console.log('source: ' + source);
});
jede Hilfe würde
Kein Scherz, wusste ich nicht, dass Sie alle Ihre Attribute in einem schönen Objekt Literal hinzufügen können, Ihre Lösung definitiv geholfen. Aber wie kommt es, dass Sie für die Klickfunktion keinen Ereignis-Listener mehr benötigen? Das Element wird dynamisch gemacht, nein? – dalt25
genau Element wird dynamisch gemacht, aber auf Click-Ereignis wird jedes Element bei der Elementerstellung hinzugefügt und da in diesem Bereich haben Sie alle Daten es funktioniert. – pegla