如何在jQuery属性选择器中将逻辑OR与逻辑AND组合?
给出以下XML:
Max Jen Kim Bob Jon Jim Joy Amy
使用jQuery,有没有办法选择男性用户,来自CA或NV,但不使用过滤function? 要清楚,我知道
$(xml).find("user[sex='m']")
只选择男性用户
$(xml).find("user[state='CA'],[state='NV']")
从CA或NV中选择所有用户。 但我无法将它们与单个选择器中的逻辑AND组合在一起。
但是,使用filterfunction可以起到以下作用:
$(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),并且每个状态重复一次(这将是你的逻辑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
您可以组合多个选择器,但语法不完全正确:
$(xml).find("user[state='CA'],[state='NV']")
这将查找状态为“CA”的所有
$(xml).find("user[state=CA][sex=m],user[state=NV][sex=m]")
如果你不想重复自己:
$(xml).find("user").filter("[state='CA'],[state='NV']").filter("[sex='m']");