0

これが私のコードです。ダイアログボックスをドラッグ可能にしようとすると、ボタンの:active機能が失われます。「ハンドル」オプションをドラッグ可能に追加しましたが、機能しませんでした。私は何を間違っていますか?

function Alert(text){
    var $Alert = $('<div/>').attr('id', 'Alert');
    $('body').append($Alert);
    
    $Alert.draggable({handle:"#Alert"});
    
    $Alert.append($('<div/>').attr('id', 'AlertText').text(text));
    $Alert.append($('<br/>'));
    $Alert.append($('<div/>').attr('id', 'AlertButton').text('OK'));
    
    $('#AlertButton').click(function(){
        $Alert.remove();
    });
}
4

2 に答える 2

0

申し訳ありませんが、私は新しいので、当時は自分で答えることができませんでした。コメントを投稿しようとしましたが、明らかに表示されませんでした。私は自分で答えを見つけました.stackoverflow.comは私のために答えを保存するのに十分です. Jquery Draggable UI は、ドラッグ可能な div 内の HTML 要素に対する通常のブラウザの動作をオーバーライドします

次のように、内側からのドラッグを無効にすることができます。

$("#popup div").bind('mousedown mouseup', function(e) {
  e.stopPropagation();
});

event.stopPrpagation() は、ドラッグ イベントがバインドされている外側へのバブリングから内側へのクリックを停止します。イベントがそこに到達することはないため、これらのドラッグ イベント ハンドラーは干渉しません。ドラッガブルを作成する前または後にこのコードを実行できます。どちらの方法でも機能します。

誰かを助ける場合に備えて、私の現在のコードは次のとおりです。

function Alert(text){
    var $Alert = $('<div/>').attr('id', 'Alert');
    $('body').append($Alert);

    /*optional, requires jQuery ui .draggable()*/
    $Alert.draggable({handle:"#Alert"});

    $Alert.append($('<div/>').attr('id', 'AlertText').text(text));
    $Alert.append($('<br/>'));
    $Alert.append($('<div/>').attr('id', 'AlertButton').text('OK'));

    $("#AlertButton").bind('mousedown mouseup', function(e) {
        e.stopPropagation();
    });

    $('#AlertButton').click(function(){
        $Alert.remove();
    });
}
于 2012-09-14T10:38:56.753 に答える
0

待って...何を選択してい$('<div/>')ますか?divIDまたはクラスを使用する必要があるかもしれません;)

于 2012-09-13T17:36:24.443 に答える