2011-01-06 11 views
0

ich diesen HTML habenjquery eingestellt wählen Sie die Option hat keine Auswirkung auf die HTML-

<select name="grid.SprintModel" id="grid_SprintModel"> 
    <option value="">&lt;None&gt;</option> 
    <option value="739af096-a732-49ea-b9fc-d9220a25ed36">1. Meilenstein: Spezifikation</option> 
    <option value="94749a48-fe3b-4f03-8757-4b07257f6c18">2. Meilenstein: Test</option> 
    <option value="775efd45-b90f-43f9-84e6-6eb7cf1f05d7">3. Meilenstein: Qualitätsrelease</option> 
</select> 

Dann habe ich diese jquery

function onConfigureSprintSelection() { 
    // find the dropdown first 
    var $dropdown = $('select[name$=grid.SprintModel]'); 
    $('<option/>', { text: '<None>', value: '' }) 
     .prependTo($dropdown); 
    // find the table row (tr) which is being edited 
    var $tr = $dropdown.closest('tr:has(form)'); 

    // get the grid client object 
    var grid = $tr.closest('.t-grid').data('tGrid'); 

    // get the data item bound to this table row 
    var dataItem = grid.dataItem($tr); 
    // set the value of the dropdown to select the proper item 
    var value = dataItem.SprintModel ? dataItem.SprintModel.RowKey : ''; 
    $dropdown.val(value); 
    var xyz = 1; // Just a row for a breakpoint 
} 

Wenn ich die Jquery debuggen, dann wird der DOM-Baum korrekt geändert wird:

  • Die Option keine wird eingefügt.
  • Die aktuelle Option = true ausgewählt

Aber in dem HTML-Code nur die neue Option <None> erscheint. Die aktuell ausgewählte Option wird nicht angezeigt. Es erscheint immer: <None>

  • Das Problem tritt nur in Firefox.
  • In IE funktioniert es gut.
  • In Safari gibt es ein anderes Problem. weder ist noch die richtige Option ausgewählt. Das Feld ist leer.

?!?!

Ich erinnere mich, in früheren Firefox-Releases verwendet es korrekt zu arbeiten. Ich habe 3.6.13.

Antwort

1

Ihre erste Probleme ist, dass Sie Zitate rund um den Wert des Attributs in diesem Selektor müssen:

<option text="<None>" value="" /> 

und nicht:

$('select[name$="grid.SprintModel"]') 

Als nächstes wird $('<option/>', { text: '<None>', value: '' }) erstellen

<option value="">&lt;None&gt;</option> 

Welches ist, was ich nehme, Sie würden wollen.

Schließlich kann ich keine jQuery-Methode namens dataItem() finden.

Es tut mir leid, das ist nicht wirklich eine endgültige Antwort, aber Komplikationen entstehen in der Regel von nicht-Standard-Code. Sehen Sie sich also die von Ihnen verwendete jQuery genauer an und versuchen Sie, sie zu vereinfachen.

+0

dataItem() ist nicht das Problem. Es gibt das JSON-Datenelement der umgebenden Tags zurück. Das funktioniert gut. Wie gesagt: Der DOM-Baum wurde zwar korrekt geändert, aber in Firefox und in Safari wird er nicht korrekt gerendert, sondern zB. –