通过多个可能的属性值进行选择的更简洁的方法?

Posted

技术标签:

【中文标题】通过多个可能的属性值进行选择的更简洁的方法?【英文标题】:A cleaner way to select by multiple possible attribute values? 【发布时间】:2011-07-25 05:07:40 【问题描述】:

在 jQuery 中是否有可能通过多个可能的属性值进行选择,而不必使用逗号分隔的选择器列表。

所以代替:

#list1 > option[value="1"], #list1 > option[value="2"], etc

类似:

#list1 > option[value="1"|value="2"], etc

【问题讨论】:

最接近的是jQuery('[attribute*="value"]')。属性包含值选​​择器。 @JohnP:嗯,我真的希望得到准确的值,根据这个问题,我的回答有点难看:***.com/questions/5471777/… 【参考方案1】:

我不知道。我能想到的最干净的方法是首先使用所有项目中的公共元素进行选择,然后只使用.find().filter() OR 值。

类似

$('#list1 > option[value]')
    .filter('[value="1"],[value="2"]')
    ;

【讨论】:

... 或者使用您自己的链包装函数扩展 jQuery。 :D 啊,是的,实际上还不错(指的是您的答案,而不是评论;-))。给我点赞。 :) 不是说评论不好顺便说一句。但不是那么精通 jQuery,甚至不知道你在说什么,更不用说知道如何将它破解。 :) @fireeyedboy ~ 啊,别担心。 :D 当你找到时间时,它会带来一些不错的阅读,所以这基本上是它的要点:me.lt/4xl6P。当然,在 jQuery 站点本身上有更好的文档。 :D 啊,是的,我现在明白你的意思了。我以前在各种插件中看到过。不过,我担心将我的问题的提议功能组合在一起会非常棘手。 ;-) 我认为我不会费心去做,就我而言,看到你的答案已经非常干净了。通过这样的实现,一个人可能会赢得几毫秒的时间。但我只是不够在意。 :-P 感谢您的链接。还是有用的!【参考方案2】:

您可以像这样制作自定义 jQuery 函数:

$.fn.filterAttrVals = function (attr, vals) 
    var filter = '[' + attr + '="' + vals.split(',').join('"],[' + attr + '="') + '"]';
    return this.filter(filter);
;

对于您的示例,您可以通过以下方式使用它:

$('#list1 > option').filterAttrVals('value','1,2');

【讨论】:

【参考方案3】:

你可以这样做

var valuesNeeded = [1,2,etc];

$('#list1 > option').filter(function( index ) 
    return valuesNeeded.indexOf($(this).attr('value')) != -1;
);

【讨论】:

以上是关于通过多个可能的属性值进行选择的更简洁的方法?的主要内容,如果未能解决你的问题,请参考以下文章

在 React 中将状态变量和方法传递给子组件的更简洁的方法?

通过选择多个属性值之一从数组中获取 JavaScript 对象 [关闭]

通过地理位置获取用户的状态

使用 Maybe 遍历嵌套记录的更短方法

检查 jquery 的多个输入的值是不是为空的更短方法

Jquery详解