我有一个div基于从另一个数据源提取的变量结果的模板自动设计的样式。样式值是内联设置的,如下所示:

<div class="view-empty message" style="display: block;">
    There are no active Invoices to display.
</div>

我已经能够在 DOM 中看到这一点并来回切换可见性,但到目前为止还无法使用 Jquery 检索样式值。我想要做的是根据类搜索 div(因为“view-empty message”类是唯一的)并返回 style 属性的值。所以在这种情况下我想返回"display: block"or "block"我尝试了许多不同的方法(例如我在网上看到的 .attr() 和 css. ),但到目前为止没有一个返回我正在寻找的内容。这是我正在使用的最新的:

var displayValue = document.getElementsByClassName($(".view-empty message"))[0].style;

有任何想法吗?我很感激你的帮助。


哦,妈的。灯泡。你的选择器是错误的。改变:

$('.view-empty message').attr('style');

$('.view-empty.message').attr('style');

在您的选择器中,您试图获取.view-empty message在类为 的容器内查找名为 message 的 HTML 元素.view-empty相反,您需要为具有两个类的元素指定一个选择器$('.view-empty.message');

;]


-- 有帮助但现在无关紧要... --

您需要指定您尝试获取哪个属性的值。请注意我如何'style'.attr()方法中指定属性。这将检索该属性的值。

$('.view-empty.message').attr('style');

根据该方法的文档.attr(),实际上不存在不带参数的方法。http://api.jquery.com/attr/

当您使用一个值调用该方法时,它会返回该属性的值。

<div class='foo'></div>

$('.foo').attr('class'); // returns "foo"

当您使用两个值调用该方法时,它会在元素上设置一个属性,该属性的名称为第一个参数,值等于第二个参数。

<div class='foo'></div>

$('.foo').attr('style', 'display: none;');

<div class='foo' style='display: none;'></div>

也许尝试一下$(".view-empty message").css('display')您还可以设置显示属性$(".view-empty message").css('display', 'none').

我假设您没有使用style='display:none'作为某种标志/状态变量。如果是的话,也许尝试将 display 属性放在一个类中并使用 jquery 的.addClass()and .removeClass()?


只是一个样式提示,您很少需要将原始 javascript 访问器 ( getElementById、getElementsByClassName) 等与 jQuery 混合。这就是 jQuery 的美妙之处:]。我很高兴您在到达这一点后停下来并伸出援手!

谢谢你的提示!:)

感谢您花时间发布此内容!当我使用此方法时,它返回空白 - 只是一个开始和结束引号 "" 。另外,我之前发布的方法返回一个样式对象......其中列出了所有属性,但它们是空白的。

哦,哇,这个也让我呆了一分钟。我已经解决了您的问题并刚刚编辑了我的回复。看我的更新!

谢谢!我肯定会用这个更新的代码抓住正确的 div(我逐步浏览并查看 - 我现在可以看到文本),所以这是向前迈出的一步。不过,样式属性仍然没有被返回......也许他们在这个模板中设置样式的方式发生了一些奇怪的事情。

当你尝试时你会得到什么吗$('.view-empty.message').attr('class');?