这是我第一次使用 jQuery,我很高兴我的第一次尝试工作。在这篇文章的帮助下,我设法实现了我想做的事情,但我不禁觉得有一种更简洁的方法可以做到这一点,但无法弄清楚如何做。
基本上我有一个页面,其中包含根据所需服务级别更改价格的下拉菜单。When the select options are changed the color of the price also changes. 这些价格来自一个数据库,所以我在这里放了一个基本版本,价格不会改变,但文本颜色会改变。
每个下拉列表的 id 像这样递增 - optn0x0、optn1x0 等
以及价格增量的 div id,例如 pricediv0、pricediv1 等
我想做的是将 jQuery 代码合并到一个函数中,因为有 13 个下拉菜单,所以按照我的方式,这将是很多代码。
这是代码
<style>
.saver{color:red;}
.express{color:black;}
.expressplus{color:blue;}
</style>
<html>
<select class="prodoption" name="optn0" id="optn0x0"><option value="68">Saver</option>
<option value="69" selected="selected">Express</option>
<option value="70">ExpressPlus</option>
</select>
<td class="cobll cpdll"><div class="prod3price"><span class="price" id="pricediv0">74.00</span></div></td>
<select class="prodoption" name="optn0" id="optn1x0"><option value="68">Saver</option>
<option value="69" selected="selected">Express</option>
<option value="70">ExpressPlus</option>
</select>
<td class="cobll cpdll"><div class="prod3price"><span class="price" id="pricediv1">74.00</span></div></td>
</html>
这是jQuery
$('select[id^=optn0x0]').change(function(){
$('#pricediv0').removeClass('saver express expressplus').addClass(
$(this).find('option:selected').text().toLowerCase()
);
})
.change();
$('select[id^=optn1x0]').change(function(){
$('#pricediv1').removeClass('saver express expressplus').addClass(
$(this).find('option:selected').text().toLowerCase()
);
})
.change();
任何建议将不胜感激。
你好,
谢谢大家对此的回答
我现在有两个可行的解决方案:
$('select[id^="optn"]').change(function(){
var ind = $(this).attr('id').replace('optn', '')
var cls = $(this).find('option:selected').text().toLowerCase();
$('#pricediv' + parseInt(ind) ).removeAttr('class').addClass(cls)
})
.change();
和
$('select[id^="optn"]').change(function(){
var ind = $(this).attr('id').replace('optn', '')
$('#pricediv' + parseInt(ind) ).removeClass('saver express expressplus').addClass(
$(this).find('option:selected').text().toLowerCase()
)
})
.change();
任何人都可以提供任何指导,说明哪一个是最好的,因此我应该使用哪一个,因为我是 jQuery 新手,我试图了解什么是做什么的。