0

我在 miva 系统中工作,所以只能说这是一场噩梦。我有以下必须使用的代码

<select name="ShippingMethod">
<option value="mvfedexsoap:FEDEX_2_DAY">FedEx 2Day® ($15.91)</option>
<option value="mvfedexsoap:GROUND_HOME_DELIVERY">FedEx Home Delivery® ($13.36)</option>
<option value="mvfedexsoap:PRIORITY_OVERNIGHT">FedEx Priority Overnight® ($20.15)</option>
<option value="mvfedexsoap:STANDARD_OVERNIGHT">FedEx Standard Overnight® ($18.41)</option>
</select>

我在这家商店中唯一的选择是使用 jquery。我对 jquery 还很陌生,所以我很感激你愿意给我的任何帮助。

在页面加载时,我希望它选择最便宜的选项。我想到的方法是以某种方式收集选项中的文本,解析出价格,然后比较并选择最低值。如果你有什么可以帮助我提前谢谢你。

4

3 回答 3

2

试试这个jsFiddle 示例

var idx = 0;
var lowest = 9999;
$('select[name=ShippingMethod] option').each(function(i) {
    val = parseFloat($(this).text().split('$')[1]);
    if ( val < lowest) {
        idx = i;
        lowest = val;
    }
});
$('select[name=ShippingMethod] option:eq('+idx+')').prop('selected', true);

​基本上这会遍历选项文本值,将它们拆分并解析为浮点数,然后找到最小值并选择它。

于 2012-10-05T16:09:21.820 回答
0
$("option").each(function(index) { 
 // alert(index + ': ' + $(this).text()); 
 var text = $(this).text();//get text for each option

  var price = text.split("$");//split text at the $ symbol

  var final_price = price[1].replace(/[()]/g,'');//remove all remaining parenthesis from string



  alert(final_price);

});

我很快把它放在一起,从每个文本中单独获取价格,这样你就可以对其进行排序。希望这可以帮助

于 2012-10-05T16:30:26.653 回答
0

而不是使用 using.each和那些凌乱的解决方法,您可以在 3 行中实现您所需要的;-)

现场演示:http: //jsfiddle.net/oscarj24/ZgEbH/

 prices = $("select[name=ShippingMethod] option").map(function(){ return parseFloat($(this).text().split('$')[1]); }).get();
 lowPrice = Math.min.apply(Math, prices);
 $("select[name=ShippingMethod] option:contains('" + lowPrice + "')").prop("selected", true);
于 2012-10-05T16:49:15.663 回答