使用JQuery检查元素是否有边框
Use JQuery to check if element has a border?
所以我在玩$(el).css()
,试图确定元素是否有边界。我使用.css("border-style", "solid")
来设置边界,这很有效,但实际上它设置了4种单独的样式:
border-right-style
border-left-style
border-top-style
border-bottom-style
因此,检查边界有点麻烦,因为你必须做一些类似的事情:
if ($(el).css("border-right-style") == "solid" && $(el).css("border-left-style") == "solid" && ...) {}
简单地检查$(el).css("border-style") != ""
是不起作用的,因为border-style
总是等于"。
有更优雅的方法吗?
border-style
是Shorthand,你不能把它们放在一起,所以你必须把它们分开,因为根据Jquery CSS文档
Shorthand CSS properties (e.g. margin, background, border) are not supported.
For example, if you want to retrieve the rendered margin,
use: $(elem).css('marginTop') and $(elem).css('marginRight'), and so on.
如果您想知道是否设置了4个属性,那么是的,您必须检查4个属性。尽管我会缓存选择器。
$el = $('a');
if ($el.css("border-right-style") == "solid" && $el.css("border-left-style") == "solid" && $el.css("border-top-style") == "solid" && $el.css("border-bottom-style") == "solid")
{
alert('yay');
}
jsFiddle
我不知道是否可以做你正在尝试的事情。DOM只为内联分配的元素或脚本中的元素提供样式。它不会显示它是否从CSS声明中继承了诸如border之类的样式。
您仍然需要测试属性,但这会使其更加抽象。。。
function check(sel, prop) {
var i, property, $o = $(sel), directions = ["left", "right", "top", "bottom"];
for (i = 0; i < directions.length; i++) {
property = $o.css(prop + '-' + directions[i] + '-style');
if (property !== 'solid') {
return false;
}
}
return true;
}
它可以显示继承的CSS文件的样式值。。。。
alert($("选择器").css("边框底部颜色"));
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 根据是否选择了文件来更改文件上传时的边框颜色
- 检查对象是否在 css 边框/css 包装器内
- 如何检测浏览器是否支持开始边框样式
- 使用JQuery检查元素是否有边框
- 是否可以键入CSS边框
- 是否可以更改默认溢出:隐藏边框
- 如何确定边框的背景是否在裁剪区域内?