在jquery模式对话框中单击加载外部php文件
我正在尝试在用户单击链接时打开一个jquery模式对话框。 我想将外部php文件加载到对话框中。 我正在使用这个jquery:
$(document).ready(function() { $('#register').dialog({ title: 'Register for LifeStor', resizable: true, autoOpen:false, modal: true, hide: 'fade', width:350, height:275, });//end dialog $('#reg_link').click (function() { open: (function(e) { $('#register').load ('register.php'); }); }); });
这个HTML:
在.css文件中设置为display:none。
此外,在表单内部,链接被称为:
Not registered? Sign-Up!
(我将把表改成div)。
我没有遇到任何关于此代码的错误,但是当我点击链接时没有任何反应。 我从其他堆栈溢出post中获得了上述大部分内容。 我错过了什么吗? 表格html干扰了吗?
问候…
在你的链接中
Sign-Up!
你有name="reg_link"
,它应该是id="reg_link"
,即
Sign-Up!
所以它可以使用以下代码
$('#reg_link').click(function(e) { e.preventDefault(); $('#register').load('register.php'); });
要使它成为一个可以使用的对话框
$(document).ready(function() { var dlg=$('#register').dialog({ title: 'Register for LifeStor', resizable: true, autoOpen:false, modal: true, hide: 'fade', width:350, height:275 }); $('#reg_link').click(function(e) { e.preventDefault(); dlg.load('register.php', function(){ dlg.dialog('open'); }); }); });
只是一个例子 。
加载页面后创建对话框.load()
用新内容替换容器的内容
你的点击处理程序有语法错误,看起来你传递一个函数和一个对象的组合作为参数,它应该是一个正常的函数。 喜欢
$('selector').click (function() { //code });
$(document).ready(function() { $('#reg_link').click (function() { $('#register').load ('register.php', function(){ $('#register').dialog({ title: 'Register for LifeStor', resizable: true, modal: true, hide: 'fade', width:350, height:275, });//end dialog }); }); }); Not registered? Sign-Up!
我并不完全熟悉.dialog()
函数,但你使用的是.click()
错误。 部分问题是关于花括号{}
一些混淆。 它们被用于两个完全不同的东西,你把这两个混合起来。
花括号的第一个用途是指示块的内部:循环的内部,条件的内部,函数的内部。 例如:
// some code in the global scope function something() { // some different code within this function block } // function's done, we're back in global scope
第二种用法是对象或关联数组的JSON(JavaScript Object Notation),其中属性或值与以下格式的名称或键配对:
var jsonSomething = { key1: value1, key2: value2, etc: etcvalue, };
当你写$('#reg_link').click (function() {
,你打开一个带有大括号的function块,而不是启动JSON。因此,当你open:
好像这是一个JSON并且你正在设置open
键),某些东西肯定不会像你期望的那样工作(我很惊讶……有点……实际上没有错误)。你需要写什么内容那些花括号是函数的代码。在这种情况下,它可能只是这样:
$('#reg_link').click (function() { $('#register').load ('register.php'); });
一般来说,jQuery经常使用这两个版本,并且经常将它们混合在一起(接受JSON作为参数的函数,或者包含函数回调作为条目的JSON),因此理解哪个是哪个是非常重要的。
编辑:一些谷歌搜索: .dialog()
建议您还需要在.load()
之后调用它,这意味着块应该看起来像这样:
$('#reg_link').click (function() { $('#register').load ('register.php').dialog(/*argument(s) here*/); });
基于您自己的代码, .dialog()
实际上是一个以JSON作为参数的函数示例,因此假设该位正确,完整代码如下所示:
$('#reg_link').click (function() { $('#register').load ('register.php').dialog({ title: 'Register for LifeStor', resizable: true, autoOpen: false, modal: true, hide: 'fade', width:350, height:275, }); });