【问题标题】:Get specific css attribute from style property从样式属性中获取特定的 css 属性
【发布时间】:2011-11-02 15:18:46
【问题描述】:

我有这个 asp.net 标签。由于它是一个服务器控件,并且我想存储一些自定义信息,因此我将其存储为 css 样式。这个想法是浏览器不会理解这个属性,所以它会忽略,而如果我直接把它作为一些内置属性,它会抛出编译时错误。这是我的代码:

<asp:Label runat="server" id="sample" style="fakeStyle:someValue" />

如何使用 Jquery 获取 fakeStyle 的值?

【问题讨论】:

  • 你不要尝试使用隐藏字段来做到这一点!

标签: jquery asp.net


【解决方案1】:

不要那样做。改用自定义属性:

<asp:Label runat="server" id="sample" fake_attribute="somevalue" />

然后这样读:

var myVal = $("#<%=sample.ClientID%>").attr("fake_attribute");

作为记录,您可以使用这样的代码读取 CSS 值:

var myVal = $("#<%=sample.ClientID%>").css("fakeStyle");

但就像我说的,拥有无效的 CSS 并不是一个好主意。

【讨论】:

  • 这行得通。哇。好的!没想到这会起作用,所以甚至没有尝试。我认为它会抛出编译时或运行时错误;)
  • ASP.NET 并不完全愚蠢.. 它只会将任何非保留属性(例如自定义属性)按原样抛出到浏览器,而不进行任何解析,将它们添加到生成的标签中。 :)
【解决方案2】:

请不要那样做。太可怕了。

您可以改用数据属性。 jQuery 让您可以使用适用于大多数浏览器的 HTM5ish 数据属性。

<asp:Label runat="server" id="sample" data-something="my data" />

jQuery:

alert($("#sample").data("something"));

http://api.jquery.com/data/

【讨论】:

  • +1 是优雅的解决方案,但我们还有一段时间(一年?)才能让全球 95% 的活跃浏览器支持 HTML5。
  • @Shadow:确实如此。也许这就是为什么只有我将您的答案标记为有效的原因。但是 +1 到 karim79
  • @Shadow Wizard - 我同意,但由于两种解决方案的实施工作量大致相同,您是否更喜欢已经过时的解决方案?
  • 我不会有大约 30% 的访问者失败的代码。如果浏览器不支持此功能,可以检查并进行“回退”,但这已经使代码变得复杂。由于我认为自定义属性不会被弃用,我可以说我的代码也是面向未来的,只是不是很优雅。 :)
  • @Shadow Wizard - 关键是,对于 30% 的人来说,数据属性不会失败,因为 jQuery 让他们工作,即使在旧浏览器中也是如此。当我说“面向未来”时,我的实际意思是您将来不需要将它们更改为 HTML5 属性。我发布的解决方案 确实 依赖于 jQuery。我并不是说这比您的解决方案更好,我只是认为您没有看到我要表达的观点。 (或者,我完全错了,应该保持安静:)
猜你喜欢
  • 2023-03-03
  • 2015-07-20
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2017-09-02
  • 2022-10-24
  • 2017-08-13
相关资源
最近更新 更多