Jquery 基于css属性的选择器

Jquery 基于css属性的选择器,jquery,css,jquery-selectors,Jquery,Css,Jquery Selectors,是否可以根据CSS属性的值选择元素。 例如: CSS规则: div.blockWithBorder { border: 1px solid red; } HTML标记: <div id="A" class="blockWithRedBorder">...</div> <div id="B" style="border: 5px dashed red">...</div> <div id="C" style="border: 2px soli

是否可以根据CSS属性的值选择元素。 例如:

CSS规则:

div.blockWithBorder { border: 1px solid red; }
HTML标记:

<div id="A" class="blockWithRedBorder">...</div>
<div id="B" style="border: 5px dashed red">...</div>
<div id="C" style="border: 2px solid #FF0000">...</div>
。。。
...
...

我想找到所有带有红色边框的
div
元素。A、 B和C匹配此查询。

您可以这样做,但这意味着为您要查询的每个元素获取计算的样式值,这可能是一个非常昂贵的操作

下面是一个例子:

var a = [].slice.call(document.querySelectorAll("a"));

var redLinks = a.filter(function(i){
  window.getComputedStyle(i);
  var color = i.style.borderColor.toLowerCase();
  return (color === 'red' || color === '#f00' || color === '#ff0000') ? i : false;
});

您可以这样做,但这意味着为每个查询的元素获取计算样式值,这可能是一个非常昂贵的操作

下面是一个例子:

var a = [].slice.call(document.querySelectorAll("a"));

var redLinks = a.filter(function(i){
  window.getComputedStyle(i);
  var color = i.style.borderColor.toLowerCase();
  return (color === 'red' || color === '#f00' || color === '#ff0000') ? i : false;
});

您可以这样做,但这意味着为每个查询的元素获取计算样式值,这可能是一个非常昂贵的操作

下面是一个例子:

var a = [].slice.call(document.querySelectorAll("a"));

var redLinks = a.filter(function(i){
  window.getComputedStyle(i);
  var color = i.style.borderColor.toLowerCase();
  return (color === 'red' || color === '#f00' || color === '#ff0000') ? i : false;
});

您可以这样做,但这意味着为每个查询的元素获取计算样式值,这可能是一个非常昂贵的操作

下面是一个例子:

var a = [].slice.call(document.querySelectorAll("a"));

var redLinks = a.filter(function(i){
  window.getComputedStyle(i);
  var color = i.style.borderColor.toLowerCase();
  return (color === 'red' || color === '#f00' || color === '#ff0000') ? i : false;
});

您可以筛选一组元素:

var $divsBorderRed = $('div').filter(function(){
    return ~this.style.borderColor.indexOf("red") || ~this.style.borderColor.indexOf("rgb(255, 0, 0)") || ~this.style.borderColor.indexOf("#FF0000")
});
编辑:或类似以下内容:

var $divsBorderRed = $('div.blockWithRedBorder, div[style*="#FF000"], div[style*="red"]');

正如您所见,这并不是在所有情况下都很好…

您可以筛选一组元素:

var $divsBorderRed = $('div').filter(function(){
    return ~this.style.borderColor.indexOf("red") || ~this.style.borderColor.indexOf("rgb(255, 0, 0)") || ~this.style.borderColor.indexOf("#FF0000")
});
编辑:或类似以下内容:

var $divsBorderRed = $('div.blockWithRedBorder, div[style*="#FF000"], div[style*="red"]');

正如您所见,这并不是在所有情况下都很好…

您可以筛选一组元素:

var $divsBorderRed = $('div').filter(function(){
    return ~this.style.borderColor.indexOf("red") || ~this.style.borderColor.indexOf("rgb(255, 0, 0)") || ~this.style.borderColor.indexOf("#FF0000")
});
编辑:或类似以下内容:

var $divsBorderRed = $('div.blockWithRedBorder, div[style*="#FF000"], div[style*="red"]');

正如您所见,这并不是在所有情况下都很好…

您可以筛选一组元素:

var $divsBorderRed = $('div').filter(function(){
    return ~this.style.borderColor.indexOf("red") || ~this.style.borderColor.indexOf("rgb(255, 0, 0)") || ~this.style.borderColor.indexOf("#FF0000")
});
编辑:或类似以下内容:

var $divsBorderRed = $('div.blockWithRedBorder, div[style*="#FF000"], div[style*="red"]');

正如您所看到的,这并不是在所有情况下都很好…

首先,您不必为此编写代码。应该存在类似“blockWithRedBorder”的类或一些选择器。如果你想在下面找到一个快速解决方案,这应该会对你有所帮助

您可以遍历所有
div
,然后像这样读取border css属性:


首先,您不必为此编写代码。应该存在类似“blockWithRedBorder”的类或一些选择器。如果你想在下面找到一个快速解决方案,这应该会对你有所帮助

您可以遍历所有
div
,然后像这样读取border css属性:


首先,您不必为此编写代码。应该存在类似“blockWithRedBorder”的类或一些选择器。如果你想在下面找到一个快速解决方案,这应该会对你有所帮助

您可以遍历所有
div
,然后像这样读取border css属性:


首先,您不必为此编写代码。应该存在类似“blockWithRedBorder”的类或一些选择器。如果你想在下面找到一个快速解决方案,这应该会对你有所帮助

您可以遍历所有
div
,然后像这样读取border css属性:



看起来OP需要某种类型的
CSS选择器来解决他的问题,而不是任何其他方法(如使用jQuery,…),如果你说这是可能的,你应该发布一些CSS代码,并添加关于性能差的注释。你可以这样做。。。是的,但是如何编辑?用一个需要JavaScript的示例编辑。当然,他不能使用CSS选择器选择样式。谢谢。我只是忘记了选择器可以表示为函数!看起来OP需要某种类型的
CSS选择器来解决他的问题,而不是任何其他方法(如使用jQuery,…),如果你说这是可能的,你应该发布一些CSS代码,并添加关于性能差的注释。你可以这样做。。。是的,但是如何编辑?用一个需要JavaScript的示例编辑。当然,他不能使用CSS选择器选择样式。谢谢。我只是忘记了选择器可以表示为函数!看起来OP需要某种类型的
CSS选择器来解决他的问题,而不是任何其他方法(如使用jQuery,…),如果你说这是可能的,你应该发布一些CSS代码,并添加关于性能差的注释。你可以这样做。。。是的,但是如何编辑?用一个需要JavaScript的示例编辑。当然,他不能使用CSS选择器选择样式。谢谢。我只是忘记了选择器可以表示为函数!看起来OP需要某种类型的
CSS选择器来解决他的问题,而不是任何其他方法(如使用jQuery,…),如果你说这是可能的,你应该发布一些CSS代码,并添加关于性能差的注释。你可以这样做。。。是的,但是如何编辑?用一个需要JavaScript的示例编辑。当然,他不能使用CSS选择器选择样式。谢谢。我只是忘记了选择器可以表示为函数!您只是将内联样式与此样式进行比较,您需要使用计算样式与通过样式表设置的样式进行比较。@杰克,这是正确的!我真的不知道我为什么要回答这个问题,因为显而易见的答案应该是:“不要那样做!”关于计算样式,为什么不使用:
$(this).css(“边框颜色”)
?@nlips当然可以使用it@nlips这正是同一事物的jQuery风格。jQuery将调用元素上的window.getComputedStyle以获取“边框颜色”的样式值。您只需要将内联样式与此进行比较,您需要使用计算样式与通过样式表设置的样式进行比较。@Jack,这是正确的!我真的不知道我为什么要回答这个问题,因为显而易见的答案应该是:“不要那样做!”关于计算样式,为什么不使用:
$(this).css(“边框颜色”)
?@nlips当然可以使用it@nlips这正是同一事物的jQuery风格。jQuery将调用元素上的window.getComputedStyle以获取“边框颜色”的样式值。您只需将内联样式与此进行比较,您需要使用计算样式与通过样式表设置的样式进行比较。@Ja