Jquery-UI对话框 – 在没有DIV的情况下

我有我怀疑是一个简单的问题,经过search,我怀疑我的问题的答案是否定的,但要仔细检查…

有没有可能使用Jquery的ui对话框出去build立一个DIV?

即,而不是..

$(function() { $( "#dialog" ).dialog();});...

<div id="dialog" title="Do I really need this?">This is a lot of typing just to pass on a simple message</div>

是否有可能只是有像…

$(function(quickly) { $( "#dialog" ).dialog('this would be much easier');});...

并在需要时用快速()types的东西来调用它。

您可能会注意到,我可能会通过JavaScript混淆,并尝试通过反复试验find适用于我的解决scheme。

我想,我问我是否可以以类似的方式使用对话框…

alert("this is simple")

…所以我可以调用一个警报给用户,只要我需要,而不是在url点击或button按下。

希望以上是有道理的,我会怀疑我将不得不坚持丑陋的标准警报,但是让我知道如果有一个简单的解决scheme。

谢谢

我希望这可以帮助别人,你可以直接通过html对话框,如下所示:

 $("<p>Hello World!</p>").dialog(); 

所以这样你就不必有一个预制的div,你可以使用:

 $("<div>My div content</div>").dialog(); 

编辑:改变结束标签</div>而不是</p>

我使用轨道,并不喜欢有2个地方写代码高度依赖。 所以我修改了jquery-ui对话框的例子,如下面的代码。 请参阅executaDialogModal()

 <meta charset="utf-8"> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery-ui.js"></script> <link rel="stylesheet" type="text/css" media="screen" href="jquery-ui.css" /> <style> body { font-size: 62.5%; } label, input { display:block; } input.text { margin-bottom:12px; width:95%; padding: .4em; } fieldset { padding:0; border:0; margin-top:25px; } h1 { font-size: 1.2em; margin: .6em 0; } div#users-contain { width: 350px; margin: 20px 0; } div#users-contain table { margin: 1em 0; border-collapse: collapse; width: 100%; } div#users-contain table td, div#users-contain table th { border: 1px solid #eee; padding: .6em 10px; text-align: left; } .ui-dialog .ui-state-error { padding: .3em; } .validateTips { border: 1px solid transparent; padding: 0.3em; } </style> <script> $(function() { //------------------------------------------------------------------------ // variaveis globais var name = email = password = allFields = tips = null; var bValid = true; //------------------------------------------------------------------------ function updateTips( t ) { tips .text( t ) .addClass( "ui-state-highlight" ); setTimeout(function() { tips.removeClass( "ui-state-highlight", 1500 ); }, 500 ); } //------------------------------------------------------------------------ function checkLength( o, n, min, max ) { if ( o.val().length > max || o.val().length < min ) { o.addClass( "ui-state-error" ); updateTips( "Length of " + n + " must be between " + min + " and " + max + "." ); return false; } else { return true; } } //------------------------------------------------------------------------ function checkRegexp( o, regexp, n ) { if ( !( regexp.test( o.val() ) ) ) { o.addClass( "ui-state-error" ); updateTips( n ); return false; } else { return true; } } //------------------------------------------------------------------------ function executaDialogModal( ) { //----TODO: verificar antes a existência de #dialog-form e destrui-lo //----cria Form $('body').append("\ <div id='dialog-form' title='Create new user'>\ <p class='validateTips'>All form fields are required.</p>\ <form>\ <fieldset>\ <label for='name'>Name</label>\ <input type='text' name='name' id='name' class='text ui-widget-content ui-corner-all' />\ <label for='email'>Email</label>\ <input type='text' name='email' id='email' value='' class='text ui-widget-content ui-corner-all' />\ <label for='password'>Password</label>\ <input type='password' name='password' id='password' value='' class='text ui-widget-content ui-corner-all' />\ </fieldset>\ </form>\ </div>\ "); //----seta vars globais name = $( "#name" ), email = $( "#email" ), password = $( "#password" ), allFields = $( [] ).add( name ).add( email ).add( password ), tips = $( ".validateTips" ); //----cria dialog $( "#dialog-form" ).dialog({ autoOpen: true, height: 300, width: 350, modal: true, buttons: { "Create an account": function() { allFields.removeClass( "ui-state-error" ); bValid = true; bValid = bValid && checkLength( name, "username", 3, 16 ); bValid = bValid && checkLength( email, "email", 6, 80 ); bValid = bValid && checkLength( password, "password", 5, 16 ); bValid = bValid && checkRegexp( name, /^[az]([0-9a-z_])+$/i, "Username may consist of az, 0-9, underscores, begin with a letter." ); // From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/ bValid = bValid && checkRegexp( email, /^((([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([az]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "eg. ui@jquery.com" ); bValid = bValid && checkRegexp( password, /^([0-9a-zA-Z])+$/, "Password field only allow : az 0-9" ); if ( bValid ) { $( "#users tbody" ).append( "<tr>" + "<td>" + name.val() + "</td>" + "<td>" + email.val() + "</td>" + "<td>" + password.val() + "</td>" + "</tr>" ); $( this ).dialog( "close" ); } }, Cancel: function() { $( this ).dialog( "close" ); } }, close: function() { removeFormModal(); allFields.val( "" ).removeClass( "ui-state-error" ); } }); } //------------------------------------------------------------------------ function removeFormModal( ) { $( "#dialog-form" ).remove(); } //------------------------------------------------------------------------ $( "#create-user" ) .button() .click(function() { executaDialogModal(); }); }); </script> 

现有用户:

姓名电子邮件密码John Doe john.doe@example.com johndoe1

创build新用户

怎么样的提示

但是你认为增加一个div会写很多东西

你不会喜欢这些

http://trentrichardson.com/Impromptu/index.php

http://abeautifulsite.net/blog/2008/12/jquery-alert-dialogs/

这对我有用。 注意避免身体填充div,我确保closures后删除使用的div:

 $('<div>').prop('id', '_currentDialog').text("Please enter a Comment").dialog( {    title: "Input Error",        close: function () {        $('#_currentDialog').remove();       }   } ); 

您可以创build一个帮助器方法,它抽象出div的创build和configuration,然后调用.dialog()。 这将至less消除重复代码和/或创build多个div的需要。