使用javascript分配动态变量

时间:2014-01-16 11:05:27

标签: javascript jquery

我有这个代码可以改变具有相同结束ID的不同下拉列表。我在其他地方分配了变量rl和rl_extra rs和rs_extra。

var前缀将返回那两个rl或rs。然后我想检查rl是否等于值,但我需要通过前缀调用rl变量。

因此,如果前缀==“rl”那么rl和rl_extra变量是rl通过前缀。同样,如果前缀==“rs”,则显示的rl变量为actuall rs和rs_extra。

有没有办法让变量变量?

$('[id$="_prop_val"], [id$="_extra_val"]').change(function(){
    var prefix = this.id.slice(0,2);
    if(  rl == $('#'+prefix+'_prop_val').val() 
         && rl_extra == $('#'+prefix+'_extra_val').val()){
        $('#'+prefix+'_nt_row').hide();
    }
    else{
        $('#'+prefix+'_nt_row').show();
    }
    getPrices();
    displayNMP();
});

2 个答案:

答案 0 :(得分:0)

如果我理解你的意思,你可以这样做:代替rl,rl_extra,rs,rs_extra等,使用具有属性的对象:

var props = {
    "rl": rl, // Or you could use the selector directly here and skip the rl declaration entirely
    "rl_extra": ...,
    "rs": ...,
    "rs_extra": ...,
    "xy": ...,
    "xy_extra": ...,
    ...
};

然后:

$('[id$="_prop_val"], [id$="_extra_val"]').change(function() {
    var prefix = this.id.slice(0,2);
    if (props[prefix] == $('#'+prefix+'_prop_val').val() && props[prefix + "_extra"] == $('#'+prefix+'_extra_val').val()) {
        $('#'+prefix+'_nt_row').hide();
    } else {
        $('#'+prefix+'_nt_row').show();
    }
    getPrices();
    displayNMP();
});

答案 1 :(得分:0)

您需要使用data-* HTML元素属性。

jQuery .data()函数: http://api.jquery.com/data/
进一步阅读: https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes

所以你的JS代码看起来像这样:

$(".dropdown").change(function(){

  var associated_element = $('#'+this.data("associated-id"));
  var associated_value_to_match = this.data("associated-value");

  if (associated_element.val() == associated_value_to_match)
    associated_element.hide();
  else
    associated_element.show();

  getPrices();
  displayNMP();

}

您的HTML代码看起来像这样:

<select class="dropdown" id="first" data-associated-id="second" data-associated-value="2">
</select>
<select class="dropdown" id="second" data-associated-id="third" data-associated-value="3">
<option value="1">one</option>
<option value="2">two</option>
</select>

我对你究竟想要完成的事情有点模糊,但上面的内容应该为你提供如何将元数据与HTML元素相关联的要点,并且在JS逻辑中使用它。