JQuery按背景颜色查找元素
尝试通过使用JQuery查找具有设置为SelectedRowStyle背景颜色的background-color属性的行来访问GridView的Selected行。 那种颜色是#FF6600。 我试过了
var row = $("tr").find().css("background-color", "#FF6600");
但这只是将所有行设置为橙色。
var row = $("tr[background-color=#FF6600");
那返回空
var row = $("tr").find().attr("background-color");
返回undefined
试试.filter
方法。
var rows = $('tr').filter(function(){ var color = $(this).css("background-color"); return color === "#FF6600" || color === "rgb(255, 102, 0)" ; });
我没有测试过,可能需要调整rgb部分以考虑间距。
编辑:
或者更好的是,这考虑了大写和小写
var rows = $('tr').filter(function(){ var color = $(this).css("background-color").toLowerCase(); return color === "#ff6600" || color === "rgb(255, 102, 0)" ; });
background-color
不是属性,它是一个CSS属性。 你可以尝试使用.filter
来做到这一点:
var row = $("tr").filter(function(){ // Chrome returns "rgb(255, 102, 0)" instead of "#FF6600" return $(this).css('background-color') === "rgb(255, 102, 0)"; });
$('tr').each(function(){ if($(this).css('background-color') == '#ff6600'){ //do your stuff } });
我在我的代码中使用这个伪jQuery选择器,在实用程序文件中定义:
(function() { function rgb2hex(rgb) { return '#' + rgb.match(/^rgb\(([^\)]+)\)$/)[1].split(/\s*,\s*/) .filter(Boolean).map(function(n) { return ('00' + parseInt(n, 10).toString(16)).slice(-2); }).join(''); } $.extend($.expr[':'], { // pesudo selector that allow to use :css(color: red) css: function(element, index, meta) { element = $(element); var rules = meta[3].split(';').filter(Boolean); return rules.filter(function(pair) { pair = pair.split(/\s*:\s*/); var css = element.css(pair[0]); if (css.match(/rgb\(/)) { css = rgb2hex(css); } return css === pair[1]; }).length === rules.length; } }); })(); $(function() { $('li:css(color: #ff0000)').css('background', 'black'); });
.red { color: red; }
- 1
- 2
- 3
- 4