【问题标题】:Is it legal to create your own CSS attributes?创建自己的 CSS 属性是否合法?
【发布时间】:2010-10-17 05:23:57
【问题描述】:

我正在为我的网站开发一个窗口应用程序。现在,我将每个单独的窗口设置为网站正文中的一个。我通过在 body 元素的末尾添加适当的代码来添加新窗口,并通过删除该 div 来删除它们。 (我将 jQuery 用于底层 JavaScript 架构。)

我发现对于每个窗口,我都希望能够存储一些不直接使用的值。假设我最大化一个窗口,我想保存它的旧位置和大小,这样当我取消最大化它时,它会返回到它的旧位置,而不仅仅是随机的某个地方。所以我真正的问题是,创建自定义 CSS 属性(完全知道浏览器会忽略它们)是否合法,其唯一目的是在每个 div 的基础上保留这样的信息?或者这是否违法,我应该考虑另一种选择吗?

我当然熟悉将所有这些保存在一个数组中以便系统可以盲目运行的方法,但这很可爱并且容易出错和其他事情,它仍然是一个使用起来有点棘手。

谢谢

【问题讨论】:

  • 听起来你的意思是 Javascript 属性(属性)而不是 CSS 属性....
  • 也许吧。确实,我指的是使用 jQuery 来执行类似 $(".window").css("my-property", value); 之类的事情。但肯定有更好的方法来做到这一点。

标签: jquery css attributes standards-compliance


【解决方案1】:

我会使用 jQuery<strong>data()</strong> 方法来代替存储临时数据。

$('div#window').data('position', { x: 100, y: 200, width: 50, height: 50});
$('div#window').data('state', 'minimized');

参考文献

您还可以通过将这些数据存储在 cookie 或服务器端的会话中来使这些数据持久化,并在页面加载时在客户端恢复它。这样,即使用户重新加载页面,窗口的位置和状态也会保持。

【讨论】:

  • 两者都正是我所需要的,如果可以的话,我也会接受你的,但我只会投票,因为我不能。谢谢! ^_^
【解决方案2】:

jQuery 有一个鲜为人知的特性,叫做data。有了它,你可以这样做:

$('#mydiv').data('position', {x: 150, y: 300});

// later
var position = $('#mydiv').data('position');

如果你不喜欢这个(虽然我觉得它很方便),拥有自定义属性当然没有错,尽管这会使它成为无效代码。

【讨论】:

  • 请注意,在 dom 中大量使用数据会变得非常缓慢。如果可能的话,你可能想看看其他方法
猜你喜欢
  • 2013-06-19
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多