找到一个选择选项,其值与选择数据状态和加载选项相同,为"选择"用jquery

时间:2017-02-14 00:18:04

标签: javascript jquery ajax

我将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");
}

我无法让它发挥作用。

3 个答案:

答案 0 :(得分:1)

您可以使用属性选择器[value="'+ order_status +'"]来选择值{(1}}}的option元素。

从那里,将order_status属性值设置为selectedtrue

selected

您的初始代码存在一些问题。

  • 变量$('.orderCurrentStatus option[value="'+ order_status +'"]').prop('selected', true); 引用全局对象,在本例中为this对象,因为没有功能范围。
  • 如果在使用window方法时未指定值,则返回.attr()属性值。您需要指定第二个参数才能设置selected属性的值。指定selectedtrue将适用于您的情况。但是,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);
    }
 });