【问题标题】:setting properties on jQuery elements在 jQuery 元素上设置属性
【发布时间】:2011-06-25 16:09:28
【问题描述】:

是否可以在 jQuery 元素上临时设置属性以让其他函数知道该元素正在发生某些事情?

例如:

  • 函数正在使用元素制作动画
  • 用户点击某些东西会触发另一个功能,该功能将为同一元素设置动画

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

所以也许最好在那个元素上设置一个属性,比如在动画运行时el.animating = true;这样其他功能就知道发生了什么并停止...

【问题讨论】:

    标签: javascript jquery object


    【解决方案1】:

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

    if( !$(this).is(':animated') ) {
    
        $(this).animate({/*...*/});
    
    }
    

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

    【讨论】:

    • 亲爱的,这就是我需要的:P
    【解决方案2】:

    我认为你有两种可能:

    1. 使用类作为标志。见addClass [docs]removeClass [docs]hasClass [docs]
    2. 使用.data() [docs]任意数据与元素相关联。

    可以在 jQuery 对象上设置属性,但是这只有在你保持对这个特定实例的引用时才有效。每次将选择器传递给$() 时,都会得到一个new jQuery 对象。因此类似于:

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

    不起作用

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-31
        • 2011-05-16
        • 2010-12-05
        • 1970-01-01
        • 2019-07-13
        • 2020-10-12
        • 1970-01-01
        • 2012-08-01
        • 1970-01-01
        相关资源
        最近更新 更多