use*_*264 9 javascript jquery attributes jquery-selectors
给出以下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>
Run Code Online (Sandbox Code Playgroud)
使用jQuery,有没有办法选择男性用户,来自CA或NV,但没有使用过滤功能?要清楚,我知道
$(xml).find("user[sex='m']")
Run Code Online (Sandbox Code Playgroud)
只选择男性用户
$(xml).find("user[state='CA'],[state='NV']")
Run Code Online (Sandbox Code Playgroud)
从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());
});
Run Code Online (Sandbox Code Playgroud)
谢谢!
Bol*_*ock 20
试试这个:
$(xml).find("user[sex='m'][state='CA'], user[sex='m'][state='NV']")
Run Code Online (Sandbox Code Playgroud)
基本上你在一个简单的选择器中链接sex和state属性(这将是你的逻辑AND),并在每个状态重复一次(这将是你的逻辑OR).
测试:
$(xml).find("user[sex='m'][state='CA'], user[sex='m'][state='NV']")
.each(function() {
alert($(this).text() + " - " + $(this).attr('state'));
});
Run Code Online (Sandbox Code Playgroud)
输出:
Max - CA
Bob - NV
Jon - CA
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7865 次 |
| 最近记录: |