Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

A cleaner way to select by multiple possible attribute values?

Is there a possibility in jQuery to select by multiple possible attribute values without having to use a comma separated list of selectors.

So in stead of:

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

Something like:

#list1 > option[value="1"|value="2"], etc
like image 900
Decent Dabbler Avatar asked Mar 29 '11 11:03

Decent Dabbler


2 Answers

Not that I know of. The cleanest way I can think of doing this is to first select using the common elements across all items, then just .find() or .filter() the OR values out.

Something like

$('#list1 > option[value]')
    .filter('[value="1"],[value="2"]')
    ;
like image 107
Richard Neil Ilagan Avatar answered Oct 20 '22 06:10

Richard Neil Ilagan


You can make a custom jQuery function like this:

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

For your example you could use it in the following way:

$('#list1 > option').filterAttrVals('value','1,2');
like image 34
MP. Avatar answered Oct 20 '22 06:10

MP.