给出以下
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']")
基本上,您将一个简单的选择器(这将是您的逻辑AND)将性别和状态属性链接在一起,并且每个状态重复一次(这将是您的逻辑OR).
测试:
$(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