Last active
August 29, 2015 13:57
-
-
Save TikiTDO/9834535 to your computer and use it in GitHub Desktop.
CSS Property Search
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Filter DOM elements that match all the given CSS rules | |
# Search Spec: { | |
# 'css_rule': value, | |
# OR | |
# 'css_rule': boolean_callback | |
# Example: | |
# $('div').find_by_css({body: 'white'}) # => All divs with css style body == 'white' | |
# | |
# var is_even = function (value) {value % 2 == 0}} | |
# $('div').find_by_css({'font-size': is_even) # => All divs with an event font size | |
$.fn.find_by_css = (search_spec) -> | |
# Calculate dynamic search spec | |
dynamic_spec = {} | |
for css_rule, css_value of search_spec | |
if typeof css_value == 'function' | |
dynamic_spec[css_rule] = css_value | |
else | |
dynamic_spec[css_rule] = (val) -> val == css_value | |
return $(this).filter () -> | |
element = $(this) | |
ret = true | |
for css_rule, css_checker of dynamic_spec | |
ret &= css_checker(element.css(css_rule)) | |
ret | |
### | |
// Generated by CoffeeScript 1.7.1 | |
$.fn.find_by_css = function(search_spec) { | |
var css_rule, css_value, dynamic_spec; | |
dynamic_spec = {}; | |
for (css_rule in search_spec) { | |
css_value = search_spec[css_rule]; | |
if (typeof css_value === 'function') { | |
dynamic_spec[css_rule] = css_value; | |
} else { | |
dynamic_spec[css_rule] = function(val) { | |
return val === css_value; | |
}; | |
} | |
} | |
return $(this).filter(function() { | |
var css_checker, element, ret; | |
element = $(this); | |
ret = true; | |
for (css_rule in dynamic_spec) { | |
css_checker = dynamic_spec[css_rule]; | |
ret &= css_checker(element.css(css_rule)); | |
} | |
return ret; | |
}); | |
}; | |
### |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment