【问题标题】:Setting selected option in a partial view using jQuery使用 jQuery 在局部视图中设置选定选项
【发布时间】:2020-03-11 15:36:16
【问题描述】:

我的部分下拉菜单如下所示:

<select id="odStatus" class="odStatus">
  <option value="placed">Placed</option>
  <option value="shipped">Shipped</option>
  <option value"Completed">Completed</option>
  <option value="Cancelled">Cancelled</option> 
</selection>

在我的 orders.hbs 中,我检索包含状态字符串的数据

$.get("/getOrderDetail/"+ id, (data)=>{
  // ...
  $('#orderDetail').find('#odStatus value=[' + data.order.status + ']').attr('selected', 'selected');
  // ...
}

我正在尝试获取它,所以#odStatus 显示状态是什么,但我无法开始工作。

【问题讨论】:

  • 顺便说一句,您应该使用 .prop 来设置和取消设置属性,而不是 .attr;喜欢.prop('selected',true)

标签: jquery json


【解决方案1】:

直接的问题是因为您的选择器假定value 是它自己的元素,例如。 &lt;value&gt;。相反,这应该是一个属性选择器,以select 中的option 元素为目标,并使用prop() 对其进行更新,如下所示:

$('#orderDetail').find('#odStatus option[value="' + data.order.status + '"]').prop('selected', true);

然而,值得注意的是,只需在select 上直接设置val() 即可简化逻辑。同样,find() 可以删除,因为它是多余的; id 属性在 DOM 中必须是唯一的。试试这个:

$('#odStatus').val(data.order.status);

【讨论】:

  • 但是,设置 Select 的 val 并不完全相同。例如,在选项上设置 selected 属性使其能够通过表单函数“重置”为正确的值。
  • 你认为$("select").val(value) 是做什么的?它在匹配选项上设置了 selected 属性 - select 上没有“value=" 属性 - 所以是的,它完全相同是一样的(除非你可以提供其他证明)
  • 它没有设置 selected 属性,这将是愚蠢的,因为它会破坏您在操作 Select 元素的值时需要重置的原始值。并且仅仅因为 html 没有给它一个 value 属性并不意味着该元素没有 javascript 属性值。试试看吧。
  • 我不打算尝试。你提出了索赔。你要拿出证据来
  • 大声笑,您在回答中声称它是相同的。无论如何,您可以在这里玩耍并查看:jsfiddle.net/nc4xsmvq
猜你喜欢
  • 2018-09-15
  • 2020-04-14
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多