给定以下 XML:
<users>
<user state="CA" sex="m">Max</user>
<user state="AZ" sex="f">Jen</user>
<user state="OR" sex="f">Kim</user>
<user state="NV" sex="m">Bob</user>
<user state="CA" sex="m">Jon</user>
<user state="AZ" sex="m">Jim</user>
<user state="OR" sex="f">Joy</user>
<user state="NV" sex="f">Amy</user>
</users>
使用 jQuery,有没有办法选择来自 CA 或 NV 的男性用户,但不使用过滤器功能?明确地说,我知道
$(xml).find("user[sex='m']")
只选择男性用户,而
$(xml).find("user[state='CA'],[state='NV']")
从 CA 或 NV 选择所有用户。但是我无法在单个选择器中将它们与逻辑 AND 结合起来。
然而,使用过滤器功能,以下工作:
$(xml).find("user").filter(function() {
return $(this).attr('sex') == 'm' && ($(this).attr('state') == 'CA' || $(this).attr('state') == 'NV')
}).each(function() {
alert($(this).text());
});
谢谢!
最佳答案
试试这个:
$(xml).find("user[sex='m'][state='CA'], user[sex='m'][state='NV']")
基本上,您将 sex
和 state
属性链接在一个简单的选择器中(这将是您的逻辑 AND),并为每个状态重复一次(这将成为你的逻辑或)。
测试:
$(xml).find("user[sex='m'][state='CA'], user[sex='m'][state='NV']")
.each(function() {
alert($(this).text() + " - " + $(this).attr('state'));
});
输出:
Max - CA
Bob - NV
Jon - CA
关于javascript - 如何在 jQuery 属性选择器中将逻辑 OR 与逻辑 AND 结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404995/