0

なぜこのエラーが発生するのか理解できません: TypeError: ui is undefined

しかし、コードは非常に単純です。デモコード: 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
}

ご助力ありがとうございます。

4

2 に答える 2

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 のコードを変更して、要素の ui を取得できます。

$('.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);

});
于 2012-07-23T12:09:47.810 に答える