在jQuery元素上设置属性

时间:2011-06-25 16:09:28

标签: javascript jquery object

可以临时设置jQuery元素的属性,让其他函数知道该元素发生了什么吗?

例如:

  • 一个函数正在使用元素进行动画
  • 用户点击触发另一个将为同一元素设置动画的函数的内容

=>其中一个动画将失败并搞砸css :(

所以也许最好在动画正在运行时设置该元素的属性,如el.animating = true;通过这种方式,其他功能可以知道发生了什么并停止......

3 个答案:

答案 0 :(得分:4)

在运行动画之前,您可以使用animated-selector[docs]来测试元素当前是否正在设置动画:

if( !$(this).is(':animated') ) {

    $(this).animate({/*...*/});

}

示例: http://jsfiddle.net/AGmX8/

答案 1 :(得分:3)

我认为你有两种可能性:

  1. 使用类作为标志。请参阅addClass [docs]removeClass [docs]hasClass [docs]
  2. 使用.data() [docs]任意数据与元素相关联。
  3. 可以设置jQuery对象的属性,但是这只有在你将引用保留到这个特定实例时才有效。每次将选择器传递给$()时,都会得到 new jQuery对象。因此像:

    $('div').foo = "bar";
    alert($('div').foo);
    

    没有工作。

答案 2 :(得分:1)

你的意思是使用.data?这正是它的目的。要获得临时数据,您可以从代码的其他部分访问,而不会弄乱全局变量