如何在 jQuery 属性选择器中将逻辑 OR 与逻辑 AND 结合起来?

How do I combine logical OR with logical AND within a jQuery attribute selector?(如何在 jQuery 属性选择器中将逻辑 OR 与逻辑 AND 结合起来?)
本文介绍了如何在 jQuery 属性选择器中将逻辑 OR 与逻辑 AND 结合起来?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

给定以下 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,但不使用过滤功能?说清楚,我知道

Using jQuery, is there a way to select users who are male and are either from CA or NV, but without using the filter function? To be clear, I know that

$(xml).find("user[sex='m']")

只选择男性用户,而

$(xml).find("user[state='CA'],[state='NV']")

从 CA 或 NV 中选择所有用户.但我无法在单个选择器中将它们与逻辑 AND 结合起来.

selects all users from either CA or NV. But I am not able to combine both of them with a logical AND within a single selector.

但是,使用过滤器功能,以下工作:

Using the filter function, however, the following works:

$(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']")

基本上,您将 sexstate 属性链接在一个简单的选择器中(这将是您的逻辑与),并在每个状态重复一次(这将是你的逻辑或).

Basically you chain the sex and state attributes together in a single simple selector (this would be your logical AND), and repeat them once per state (and this would be your logical 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 属性选择器中将逻辑 OR 与逻辑 AND 结合起来?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。如下图所示: 产生原因: JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会
append() 方法在被选元素的结尾(仍然在内部)插入指定内容。 语法: $(selector).append( content ) var creatPrintList = function(data){ var innerHtml = ""; for(var i =0;i data.length;i++){ innerHtml +="li class='contentLi'"; innerHtml +="a href
问题描述: 在javascript中引用js代码,然后导致反斜杠丢失,发现字符串中的所有\信息丢失。比如在js中引用input type=text onkeyup=value=value.replace(/[^\d]/g,) ,结果导致正则表达式中的\丢失。 问题原因: 该字符串含有\,javascript对字符串进行了转
Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)
CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)
Ordinals in words javascript(javascript中的序数)