我有这个代码可以改变具有相同结束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();
});
答案 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逻辑中使用它。