A cleaner way to select by multiple possible attribute values?
Is there a possibility in jQue开发者_如何学Gory 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
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"]')
;
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');
You can do this
var valuesNeeded = [1,2,etc];
$('#list1 > option').filter(function( index ) {
return valuesNeeded.indexOf($(this).attr('value')) != -1;
});
精彩评论