0

我有这个 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>

然后我有这个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
}

如果我调试 jquery,则 dom 树会正确更改:

  • 插入选项无。
  • 当前选项被选中=true

但在 html 中只<None>出现了新选项。当前选择的选项不会出现。它总是出现:<None>

  • 该问题仅出现在 Firefox 中。
  • 在即它工作正常。
  • 在 safari 中还有另一个问题。既没有选择也没有选择正确的选项。该字段为空。

?!?!

我记得在早期的 Firefox 版本中,它曾经可以正常工作。我有 3.6.13。

4

1 回答 1

1

您的第一个问题是您需要在此选择器中的属性值周围加上引号:

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

接下来,$('<option/>', { text: '<None>', value: '' })将创建:

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

并不是:

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

这就是我认为你想要的。

最后我找不到任何名为dataItem().

很抱歉,这不是一个确定的答案,但复杂性通常来自非标准代码。因此,请仔细查看您正在使用的 jQuery,并尝试简化它。

于 2011-01-06T12:13:17.407 回答