我正在编写一个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);
});
}
});
答案 0 :(得分:0)
.filter
生成源集的过滤版本。它不会改变集合本身。
而不仅仅是$walletsChosen.filter(...)
您想要使用$wallesChosen = $wallestChosen.filter(...)
。