我将2个单独的ajax响应加载到选择下拉列表中,选择下拉列表将具有数据状态,我希望实现的是循环选项并找到与选择数据具有相同值的选项-status并将其加载为"选择"。
鉴于我的ajax调用生成的html代码:
<select class="orderCurrentStatus" data-status="1215458">
<option value="608653">Goods Received</option>
<option value="608654">Purchase - Awaiting Payment</option>
<option value="608655">Purchase - Payment Received</option>
<option value="766705">EXCHANGE FEE PAID</option>
<option value="838627">Order Refunded</option>
<option value="1215458">Goods Dispatched</option>
<option value="2322397">Paid - Custom Order Under Production</option>
<option value="2384172">WRONG/INCOMPLETE ADDRESS!</option>
<option value="2544576">Paid - Awaiting Pre-Ordered Items</option>
</select>
我尝试让它发挥作用:
var order_status = $(".orderCurrentStatus").data("status");
var options = $(".orderCurrentStatus option");
if (options.val(order_status)) {
$(this).attr("selected");
}
我无法让它发挥作用。
答案 0 :(得分:1)
您可以使用属性选择器[value="'+ order_status +'"]
来选择值{(1}}}的option
元素。
从那里,将order_status
属性值设置为selected
或true
。
selected
您的初始代码存在一些问题。
$('.orderCurrentStatus option[value="'+ order_status +'"]').prop('selected', true);
引用全局对象,在本例中为this
对象,因为没有功能范围。 window
方法时未指定值,则返回.attr()
属性值。您需要指定第二个参数才能设置selected
属性的值。指定selected
或true
将适用于您的情况。但是,selected
方法更适合这种情况,因为您应该设置属性。此外,如果要对所有.prop()
元素执行此操作,则可以迭代它们,然后检索select
属性值,并设置相应的data-status
元素{{ 1}} property:
option
答案 1 :(得分:0)
你应该以某种方式检查是否存在具有指定值的选项!您实际尝试的是为每个选项元素分配一个值。
这应该是简单的解决方案:
var order_status = $(".orderCurrentStatus").data("status");
if( $('.orderCurrentStatus option[value=' + order_status + ']').length )
$('.orderCurrentStatus option[value=' + order_status + ']').attr('selected','selected');
您可以验证JSFiddle上的代码: https://jsfiddle.net/cwma9h5m/
答案 2 :(得分:0)
您始终可以遍历选项值以匹配数据状态值。
var status = $('.orderCurrentStatus').data("status");
$('.orderCurrentStatus option').each(function(){
if( $(this).val()==status){
$(this).prop('selected', true);
}
});