jQuery顺序XML过滤仅适用于所选的第一个选项

时间:2013-04-02 14:37:12

标签: jquery xml

我正在编写一个jQuery应用程序,以帮助用户从在线商店中选择产品。我是通过根据他们的选择顺序过滤XML来做到这一点的。我的代码现在的问题是只选择了第一个选项(我现在只使用2个选项)。如果用户首先选择“男性”或“女性”,他们会看到所有男性或女性钱包。但如果他们随后选择了一种材料,那么该页面根本不会改变。相反的情况也是如此:如果他们首先选择材料,他们会看到该材料的所有钱包,但如果他们选择性别,则不会进一步缩小。

以下是适用的代码:

$.get('wallets.xml', function(data) {
// Get the chosen wallets
if (genderChosen && genderChosen != "" && $walletsChosen instanceof jQuery) {
    $walletsChosen.filter('wallet[gender=' + genderChosen + ']');
}
else if (genderChosen && genderChosen != "") {
    $walletsChosen = $(data).find('wallet[gender=' + genderChosen + ']');
}
if (materialChosen && materialChosen != "" && $walletsChosen instanceof jQuery) {
    $walletsChosen.filter('wallet[material=' + materialChosen + ']');
    alert("material chosen, jQuery");
}
else if (materialChosen && materialChosen != "") {
    $walletsChosen = $(data).find('wallet[material=' + materialChosen + ']');
    alert("material chosen, non-jQuery");
}
// Print the chosen wallets
if ($walletsChosen instanceof jQuery) {
    $('#content').empty();
    $walletsChosen.each(function() {
        var $wallet = $(this);
        printWallet($wallet);
    });
}
});

1 个答案:

答案 0 :(得分:0)

.filter生成源集的过滤版本。它不会改变集合本身。

而不仅仅是$walletsChosen.filter(...)您想要使用$wallesChosen = $wallestChosen.filter(...)