2010-05-27 27 views
10

我正在使用jquery-ui,并且在某些时候,我使用显示和隐藏功能来进行动态变化的图像进出。jquery ui-effects-wraper造成破坏

出于某种原因,在几次尝试之后,突然我的网页上的控件停止响应点击。在使用萤火虫周围兜了一下之后,我发现我的页面上充满了该类的div's ui-effects-wrapper

我不知道为什么会发生这种情况或如何阻止它。如果我删除这些div,我无法再看到我一直在动画的图像。

任何想法?

+1

您的HTML有效吗?如果不是那么元素删除将遍布整个地方,请在此处检查有效性:http://validator.w3.org/ – 2010-05-27 21:11:26

+0

为什么与项目删除相关的有效性?我无法解决这个问题。我在我的网站上使用了Facebook控件,并且他们的控件不是w3有效= [还有其他想法? – vondip 2010-05-27 23:51:14

回答

3

ui-effects-wrapper是由jQuery UI效果插件添加的。

这里是从jquery.effects.core.js采取了一些代码:

// Wraps the element around a wrapper that copies position properties 
createWrapper: function(element) { 

    // if the element is already wrapped, return it 
    if (element.parent().is('.ui-effects-wrapper')) { 
     return element.parent(); 
    } 

    // wrap the element 
    var props = { 
      width: element.outerWidth(true), 
      height: element.outerHeight(true), 
      'float': element.css('float') 
     }, 
     wrapper = $('<div></div>') 
      .addClass('ui-effects-wrapper') 
      .css({ 
       fontSize: '100%', 
       background: 'transparent', 
       border: 'none', 
       margin: 0, 
       padding: 0 
      }); 

    element.wrap(wrapper); 
    wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually loose the reference to the wrapped element 

    // transfer positioning properties to the wrapper 
    if (element.css('position') == 'static') { 
     wrapper.css({ position: 'relative' }); 
     element.css({ position: 'relative' }); 
    } else { 
     $.extend(props, { 
      position: element.css('position'), 
      zIndex: element.css('z-index') 
     }); 
     $.each(['top', 'left', 'bottom', 'right'], function(i, pos) { 
      props[pos] = element.css(pos); 
      if (isNaN(parseInt(props[pos], 10))) { 
       props[pos] = 'auto'; 
      } 
     }); 
     element.css({position: 'relative', top: 0, left: 0, right: 'auto', bottom: 'auto' }); 
    } 

    return wrapper.css(props).show(); 
}, 
0

在一个功能,我有一些代码,切换的两个按钮和所使用的效果,如fadeTo和弹跳的可见性。偶尔会有一个包装剩余。 我试着将这个添加到我的方法中,这个想法是在效果排队后的1.1秒后它会移除包装。

setTimeout('$(".ui-effects-wrapper").children().unwrap();', 1100); 

这将删除陈旧的包装,但有可能它也可以删除用于效果的后续包装。

我对看到这项技术的改进很感兴趣。

+1

你可以做的一件事是在隐藏方法中使用回调函数,并将你的调用打开。 – 2016-08-16 21:41:57