javascript – 如何在逻辑和逻辑与jQuery属性选择器中组合?

给出以下 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

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...