2017-12-06 32 views
0

Ich bin dynamisch Dropdown-Listen in einer Tabelle erstellen, und ich versuche, den Index der Dropdown-Liste zu ergreifen, die das Ereignis ausgelöst hat, etwa so:Dynamisch erstellte Elemente zurückgeben alle den gleichen Index

$(".template").on('change', '.dataTypes', function() { 
    var selectedDatatype = $(this).find(":selected").val(); 
    var ix = $(this).index(); // get this index 

    $.ajax({ 
     type: "GET", 
     url: "http://localhost...", 
     contentType: "application/json; charset=utf-8", 
     success: function (result) { 
      populateListDropdown("gs", ix, result.Result); 
     }, 
     error: function() { }, 
     timeout: 120000 
    }); 
}); 

Dieser Code , unabhängig von dem Dropdown-Menü, mit dem ich interagiere, gebe immer eine 0 für den Index zurück und ich bin mir nicht sicher warum.

HTML, wenn es hilfreich ist. Die Seite hat eine einzelne Zeile, die beim Start geladen wird, und zusätzliche werden per Knopfdruck hinzugefügt.

<table class="tblColumns"> 
    <tr> 
     <td> 
      <div class="column"> 
       Select DataType : 
       <select class="dataTypes"></select> 
     </td> 
    </tr> 
</table> 

Antwort

1

index() Methode gibt Index basierend auf seinem Geschwister. Alle Dropdown-Listen sind in separaten td. Also haben alle denselben Index.

Sie suchen nach tr Index nicht select. Versuchen

$(this).closest('tr').index(); 
0

Weiterführende Literatur Besuche https://api.jquery.com/index/

„, wenn kein Argument an die .index() Methode übergeben wird, ist der Rückgabewert eine ganze Zahl ist, die die Position des ersten Elements innerhalb des jQuery Objekt relativ zu seinen Geschwisterelementen. "

In Ihrem HTML ist das das einzige Element und gibt daher immer '0' zurück.

Wie @ Azim darauf hingewiesen, wenn Sie verwenden, könnte es funktionieren.

Verwandte Themen