1

我正在学习 jQuery,并且在试图弄清楚如何在多维数组中选择元素时遇到问题。我有一个带有数据库 ID 的选择列表,我想根据所选的 ID 在数据库中设置一个带有成本字段的 var。除了将选定的 ID 转换为成本外,我拥有所有的东西。有人可以帮我解决这个问题吗?

var rangeListData = [{"idrange_list":"1","range_cost":"0","target_range_name":"Self Only"},{"idrange_list":"2","range_cost":"1","target_range_name":"1 Space"},{"idrange_list":"3","range_cost":"2","target_range_name":"2 Spaces"},{"idrange_list":"4","range_cost":"3","target_range_name":"3 Spaces"},{"idrange_list":"5","range_cost":"4","target_range_name":"4 Spaces"},{"idrange_list":"6","range_cost":"5","target_range_name":"5 Spaces"}];

$('#slctPowerTarget').change(function () {
    var targetID = $('#slctPowerTarget').val();
    var cost $.grep(rangeListData, function(e) { return e.idrange_list == targetID }); // this is the line that is wrong
    $('#spanTotalEffectsCost').text(cost);

});

如果我将 targetID 放在 cost 所在的位置,它就可以列出。但是,当我尝试查找此内容时,什么也没有发生。不知何故这是不对的,我不确定还有什么可以尝试的。我想我知道 idrange_list == targetID 应该如何匹配它们,但不确定如何调用相关的 range_cost。

谢谢你尽你所能的帮助!我通读了 jquery.com 上的文档,但似乎无法理解它们。

4

2 回答 2

4

你可以这样做 :-

// Get the Multidimensional Array first
var data = $.grep(rangeListData, function (e) {
    return e.idrange_list === targetID
});

// Get the range cost from the array
var cost = data[0].range_cost;

// Check the value in console for debugging purpose
console.log(cost);
于 2013-10-22T05:46:32.027 回答
0

这是最终的代码。我还在其中添加了一个 IF 子句,以防他们选择默认设置。这样,无论他们更改下拉菜单还是返回“选择...”,它都会重置而不是抛出错误并保持页面计算正常工作

$('#slctPowerRange').change(function () {
    var rangeID = $('#slctPowerRange').val();
    if (rangeID > 0) {
        var rdata = $.grep(rangeListData, function (e) { 
            return e.idrange_list === rangeID 
            });
        var rcost = rdata[0].range_cost;
    }
    else {
        var rcost = 0 ;
    }
    $('#hdnRangeCost').val(rcost);
});
于 2013-10-23T01:23:38.583 回答