我无法理解为什么会出现此错误: TypeError:ui未定义
然而代码非常简单! 演示代码: 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
}
非常感谢你的帮助。
答案 0 :(得分: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')
获取元素的ui
您可以更改.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);
});
答案 1 :(得分:0)
我认为你的标签顺序错了!!!
我曾经遇到同样的问题......
e.g。
<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>
然后切换它们......并且繁荣!就是这样!!希望这会有所帮助!!!