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

等等......你在选择$('<div/>')什么?也许您应该使用divID 或类;)

于 2012-09-13T17:36:24.443 回答
0

对不起各位,我是新人,所以我当时无法回答自己。我试图发表评论,但显然它没有显示。我自己找到了答案,stackoverflow.com 甚至可以为我保存答案,所以这里是:虽然我在发布之前搜索了很多谷歌和 StackOverflow,但我在这里找到了答案。 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 回答