0

jquery トリガー関数で追加パラメーターを渡すときに問題が発生しました。余分なパラメータが渡されていません。コード :

//click event binding with button goes here
$("#b").bind({ click: 
   function (e, x, y) { 
   alert(x + " " + y);   //here`s the problem, showing undefined (expecting top & left  
}                        //offset() of dropped button 
});

//here making the button draggable for drag drop functionality (applying jquery-ui)
$("#b").draggable({ helper : "clone" });

//here creating a droppable area ( here i am dropping a draggable button)
$(".droppable").live({ mouseenter: function () {
    $(this).droppable({
        accept: "#b",              // accepting only button whose id = b
        drop: function (ev, ui) {
            alert("dropped");      //alert is showing means droppable works fine  
            var y = ui.offset.top;
            var x = ui.offset.left;
            ui.draggable.trigger("click", [x , y]); // here i am triggering the click event
        }                                           // for button and passing x and y as an     
    });                                             // extra parameter 
}
});
4

1 に答える 1

1

私は状況をプロットしましたが、それは私にとってはうまくいきます(同じコードで)。

ドラッグおよびドロップ可能な要素は何ですか? 私は:

    <div id="b" style="width:200px;height:200px;background-color:red"></div>

    <div class="droppable" style="width:400px;height:200px;background-color:green"></div>

私の提案:

オフセット値を取得した後に追加console.log(x, y)します。ドラッグ可能な要素にオフセット値がない可能性があります (値は未定義です)。

クリック ハンドラーを次のように変更して、ユーザー クリックとトリガー クリックの両方を処理できるようにします。

function (e, x, y) { 
                if(typeof x !== "undefined" && typeof y !== undefined) {
                    // do trigger logic
                    return;
                }
                // do click logic
            }
于 2012-09-14T22:59:31.503 に答える