2012-07-23 24 views
0

我不明白为什么我有这样的错误:类型错误:用户界面是未定义错误的jQuery:触发拖动“类型错误:用户界面是未定义

然而,代码很简单! 演示代码:http://jsfiddle.net/9sNEK/19/

的最终目标是,当我拖动绿色的div它触发红色div的拖动

JS

$('.div_green') 
.draggable() 
.bind('drag',function(event,ui){ 

    $('.div_red').trigger('drag'); 

    $('.log').html("drag green - left:" + ui.position.left); 

}); 

$('.div_red') 
    .draggable() 
    .bind('drag', function(event,ui){ 

     $('.log2').html("drag_to_simulate - left:"+ ui.position.left); 

    }); 

HTML

<div class="div_green"></div> 

<div class="pdrag" id="pdrag1"> 
    <div class="div_red"></div> 
</div> 

<div class="pdrag" id="pdrag2"> 
    <div class="div_red"></div> 
</div> 

<div class="log" style="width:200px;height:20px;"></div> 
<div class="log2" style="width:200px;height:20px;"></div> 

CSS

.div_green, .pdrag, .div_red{ 
    position:absolute; 
} 
.div_green{ 
    width:40px; 
    height:40px; 
    top:170px; 
    left:300px; 
    background-color: green; 
} 
.pdrag{ 
    width:120px; 
    height:120px; 
    top:50px; 
    left:90px; 
    background-color: #F1F1F1; 
} 
#pdrag2{ 
    top:230px; 
    width:150px; 
} 
.div_red{ 
    width:20px; 
    height:20px; 
    top:40px; 
    left:50px; 
    background-color:red; 
} 
#pdrag2 .div_red{ 
    left:75px 
} 

非常感谢您的帮助。

回答

1

你得到TypeError: ui is undefined,因为你在.div_green的拖动绑定中触发.div_red的拖动事件。

$('.div_red').trigger('drag'); 

,但不提供UI的价值,

$('.div_green') 
.draggable() 
.bind('drag',function(event,ui){ 

    //* $('.div_red').trigger('drag'); // ui is missing, you should provide the ui here 
    * $('.div_red').trigger('drag', ui); // passing ui here 

    $('.log').html("drag green - left:" + ui.position.left); 

}); 

检查语句开始*

,或者您可以通过$(this).data('draggable') 您可以更改代码.div_red获取元素的用户界面,像

$('.div_red') 
.draggable() 
.bind('drag', function(event,ui){ 

    if(ui != null) 
     $('.log2').html("drag_to_simulate - left:"+ ui.position.left); 
    else 
     $('.log2').html("drag_to_simulate - left:"+ $(this).data('draggable').position.left); 

}); 
+0

非常感谢您的回复。但我已经试过:$('。div_red')。trigger('drag',[event,ui]); http://jsfiddle.net/9sNEK/20/ 它不起作用:( – Was 2012-07-23 12:36:24

+0

有更新的答案,替换为$('。div_red')。trigger('drag',ui); – 2012-07-23 12:40:41

+0

否则我该如何检索一个元素的“ui”是这样的:$(this).get('ui')? – Was 2012-07-23 12:41:28

0

我想y我们的标签顺序错了!

我有同样的问题,一旦....

例如

<script src="<?php echo site_url('js/jquery.mjs.nestedSortable.js'); ?>"></script> 
<script src="<?php echo site_url('js/jquery-ui-1.10.4.custom.min.js'); ?>"></script> 

然后切换它们......并繁荣!就是这样!希望这可以帮助!!!

相关问题