2009-06-08 89 views
19

下面的代碼只適用於第一次單擊事件。但是,對於任何後續的點擊都不會發生。 我在Firefox上測試了這個,ie7但仍然一樣。我錯過了什麼嗎?單擊事件打開jquery模式對話框

<script type="text/javascript"> 
$(document).ready(function() { 
    //$('#dialog').dialog(); 
    $('#dialog_link').click(function() { 
     $('#dialog').dialog(); 
     return false; 
    }); 
}); 
</script>  
</head><body> 
    <div id="dialog" title="Dialog Title" style="display:none"> Some text</div> 
    <p id="dialog_link">Open Dialog</p> 
</body></html> 

回答

27

嘗試

$(document).ready(function() { 
    //$('#dialog').dialog(); 
    $('#dialog_link').click(function() { 
     $('#dialog').dialog('open'); 
     return false; 
    }); 
}); 

沒有在最後部分打開參數

+0

對不起沒有運氣:( 我把警報( 「KKH」); $之前( '#對話')對話(); 和涉及罰款,但還沒有窗口 – Sumanta 2009-06-08 11:50:49

+2

檢查客戶端的參考資料,我使用螢火蟲來檢查是否有404s – 2009-06-08 11:56:38

+1

該對話框甚至在單擊事件之前加載頁面加載... – user20358 2012-02-23 15:48:30

11

試試這個

$(function() { 

$('#clickMe').click(function(event) { 
    var mytext = $('#myText').val(); 


    $('<div id="dialog">'+mytext+'</div>').appendTo('body');   
    event.preventDefault(); 

     $("#dialog").dialog({     
      width: 600, 
      modal: true, 
      close: function(event, ui) { 
       $("#dialog").remove(); 
       } 
      }); 
    }); //close click 
}); 

而在HTML

<h3 id="clickMe">Open dialog</h3> 
<textarea cols="0" rows="0" id="myText" style="display:none">Some hidden text display none</textarea> 
5
$(function() { 

$('#clickMe').click(function(event) { 
    var mytext = $('#myText').val(); 

    $('<div id="dialog">'+mytext+'</div>').appendTo('body');   
    event.preventDefault(); 

     $("#dialog").dialog({     
      width: 600, 
      modal: true, 
      close: function(event, ui) { 
       $("#dialog").hide(); 
       } 
      }); 
    }); //close click 
}); 

更好使用.hide()而不是.remove()。使用.remove()它會返回undefined,如果您已經按下鏈接一次,然後關閉模式,並且如果再次按下模式鏈接,則它將返回undefined並使用.remove。

使用.hide()它doesnt和它的作品就像一陣微風。 Ty爲第一手的片段!

2

如果你想放一些網頁的對話框中,你可以使用這些

function Popup() 
{ 
$("#pop").load('login.html').dialog({ 
height: 625, 
width: 600, 
modal:true, 
close: function(event,ui){ 
    $("pop").dialog('destroy'); 

     } 
}); 

} 

HTML:

<Div id="pop" style="display:none;"> 

</Div> 
0

嘗試增加你的對話框行之前這條線。

$("#dialog").dialog("open"); 

此方法適用於我。看起來,「close」命令會使用.dialog()重新打開對話框。

使用你的代碼作爲一個例子,它會去像這樣(請注意,你可能需要更多的添加到您的代碼,它是有道理的):

<script type="text/javascript"> 
$(document).ready(function() { 
    //$('#dialog').dialog(); 
    $('#dialog_link').click(function() { 
$("#dialog").dialog("open");   
$('#dialog').dialog(); 
     return false; 
    }); 
}); 
</script>  
</head><body> 
    <div id="dialog" title="Dialog Title" style="display:none"> Some text</div> 
    <p id="dialog_link">Open Dialog</p> 
</body></html> 
1

可能會有所幫助...: )

$(document).ready(function() { 
    $('#buutonId').on('click', function() { 
     $('#modalId').modal('open'); 
    }); 
});