0

我正在编写一个 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);
    });
}
});
4

1 回答 1

0

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

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

于 2013-04-02T14:40:27.777 回答