2008-11-12 123 views
12

此代码在Firefox,IE浏览器,而不是在Safari /铬:jQuery的Safari /铬不兼容性与可拖动遏制财产

<head> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" src="jquery-ui.js"></script> 
    <script> 
     function newDiv() { 
      var div = $('<div id="divNew" style="width: 50px; height: 50px; border: solid 1px; background: Red"></div>'); 
      $('#divParent').append(div); 
      div.draggable(
      { 
       containment: 'parent' 
      }); 
     } 
    </script> 
</head> 
<body> 
    <a href="javascript:;" onclick="newDiv()">new div</a> 
    <div id="divParent" style="width: 500px; height: 500px; border: solid 1px;"></div> 
</body> 

在Safari /铬中,divNew只能上下移动。 jQuery的这个功能目前不兼容?我正在使用1.5.2稳定版本。它可以在这里找到jQuery 1.5.2

回答

1

尝试用dom对象替换'父'...即$(“#divParent”),看看是否有效。

+0

我认为你是对的 – 2011-03-12 11:28:37

2

尝试用另一个div封装divParent div,然后在将divParent注入divParent的同时设置包含div的div封装。这为我工作:

<script> 
     function newDiv() { 
      var divs = 
       $(unescape('%3Cdiv class="divNew" style=""%3E&nbsp;%3C/div%3E')); 
      divs.draggable(
      { 
      containment: $('#a') 
      }); 
      $('#divParent').append(divs); 
     } 
    </script> 
</head> 
<body> 
    <style> 
    .divNew {width: 50px; height: 50px;border: solid 1px; background: Red;} 
    #divParent {width: 500px; height: 500px; border: solid 1px;}; 
    </style> 
    <a href="javascript:;" onclick="newDiv()">new div</a> 
    <div id="a"> 
     <div id="divParent" style=""> <!--<div class="divNew"></div>--> 
     </div>  
    </div> 
</body> 

编辑:我刚刚意识到这完全不起作用。您应该包含一个检查来查看浏览器是否基于webkit,然后将容器设置为1000px而不是500px。显然,这个错误与正确计算宽度有关。

+0

似乎它更关系到计算位置的宽度 – yoavf 2009-01-27 14:29:22

2

我有一些类似的问题,我的可拖动元素是绝对定位的,并且在Chrome和Safari中变得相对定位。 添加!重要的风格位置:绝对取得了诀窍。

0

要解决此问题,您必须定义WMODE不同于透明。我只是设置了wmode =窗口,并且在所有浏览器中都能正常工作。

1

Jquery UI Draggable方法不能在Safari和MAC OS X环境中以任何方式工作。所以,当写代码考虑同样喜欢:

if(!($browser.safari && navigator.appVersion.indexOf('Mac')!= -1)) { 
    $('div.urid').draggable({ 
     helper: 'clone', 
     opacity: 0.4 
    }); 
} 

当你实现拖放请考虑同...

11

我找到了解决办法是设置元素position: absolute !important,:))

+0

与最新的jQuery它仍然是解决方案... – 2012-12-02 02:17:09

3

anjalis是对的,

position: absolute !important; 

对我来说非常合适。当您发布并单击该元素时,我遇到了一些可拖动元素的小问题,它们稍微弹出容器。它会抵消轻微。与position: absolute !important和父元素position: relative;它像一个魅力。