我想知道是否有一种方法在jQuery选择器中有“或”逻辑。例如,我知道一个元素是类为classA或类为classB的元素的后代,我想做一些类似于element .parents(`。classA或。classb ')。jQuery是否提供这样的功能?
当前回答
如果有多个jQuery对象需要连接,使用逗号可能是不够的。
.add()方法将所选元素添加到结果集中:
// classA OR classB
jQuery('.classA').add('.classB');
它比'更啰嗦。classA, .classB',但允许你构建更复杂的选择器,如下所示:
// (classA which has <p> descendant) OR (<div> ancestors of classB)
jQuery('.classA').has('p').add(jQuery('.classB').parents('div'));
其他回答
Daniel A. White的解决方案适用于课堂。
我有一个情况,我必须找到输入字段,如donee_1_card,其中1是一个索引。
我的解决方案是
$("input[name^='donee']" && "input[name*='card']")
虽然我不确定这有多理想。
我写了一个非常简单(5行代码)的插件来实现这个功能:
http://byrichardpowell.github.com/jquery-or/
它允许你有效地说“获取这个元素,或者如果那个元素不存在,使用这个元素”。例如:
$( '#doesntExist' ).or( '#exists' );
虽然接受的答案提供了类似的功能,如果两个选择器(逗号之前和之后)都存在,两个选择器都将返回。
我希望这对任何可能通过谷歌登陆这个页面的人都有帮助。
如果有多个jQuery对象需要连接,使用逗号可能是不够的。
.add()方法将所选元素添加到结果集中:
// classA OR classB
jQuery('.classA').add('.classB');
它比'更啰嗦。classA, .classB',但允许你构建更复杂的选择器,如下所示:
// (classA which has <p> descendant) OR (<div> ancestors of classB)
jQuery('.classA').has('p').add(jQuery('.classB').parents('div'));
最后我找到了如何做到这一点:
div:not(:not(.classA,.classB)) > span
(选择具有类classA或具有直接子跨度的类b的div)
使用逗号。
'.classA, .classB'
你可以选择省略空格。
推荐文章
- 可以在setInterval()内部调用clearInterval()吗?
- 无法读取未定义的属性“msie”- jQuery工具
- jQuery:执行同步AJAX请求
- jQuery表格排序
- 如何禁用文本选择使用jQuery?
- 如何停止事件冒泡复选框点击
- Bootstrap抛出Uncaught错误:Bootstrap的JavaScript需要jQuery
- 如何删除和清除所有的本地存储数据
- 如何修改标签文本?
- 如何获得十六进制颜色值而不是RGB值?
- 如何将一个标题转换为jQuery的URL段塞?
- $(window).width()与媒体查询不一样
- AJAX请求中的内容类型和数据类型是什么?
- 如何打破_。在underscore.js中的每个函数
- 如何在jQuery中获得当前日期?