我有以下代码:
<?php
$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'mydialog',
// additional javascript options for the dialog plugin
'options'=>array(
'title'=>'Confirmar',
'resizable'=>'false',
'autoOpen'=>false,
'modal'=>true,
'buttons'=>array('Eliminar'=>'js:function(){deleteMessage();$(this).dialog("close");}',
'Cancelar'=>'js:function(){$(this).dialog("close");}',),
),
));?>
<div style="display:none">Do you confirm you want to delete the item?</div>
<?php
$this->endWidget('zii.widgets.jui.CJuiDialog');
?>
<input type="button" onclick="js:openDlg()" value="Open the dialog">
<script language="javascript" type="text/javascript">
function openDlg(){
$("#mydialog").dialog("open");
}
</script>
这完全有效,直到我需要调用jQuery的.load()函数。出于测试目的,我有一个调用.load()方法的按钮(尽管据说应该在doc准备好时调用它)。如果在单击此试用按钮之前单击打开的对话框按钮,则会正确打开该对话框。否则,它会因以下错误而失败:
$(“#mydialog”)。对话框不是一个功能 $( “#mydialog”)对话框( “开放”)。
试用按钮:
<input type="button" onclick="js:load_wall()" value="Load Messages">
function load_wall(){
var liga = $("#liga_id").val();
$('#div_wall_messages').load('displayMessages',{liga_id: liga}, function(){
});
拜托,欢迎任何帮助。这个错误让我发疯。谢谢!!
答案 0 :(得分:2)
什么是displayMessages
?它是一个包含脚本的页面吗?它是一个包含另一个jQuery副本的页面吗?如果你包含jQuery的第二个副本,你将覆盖你现有的副本 - 可能你正在覆盖一个装有Dialog插件的jQuery,而新的一个没有。
如果你想加载到div中,你加载的文件中的内容是HTML的整页(包括<head>
,<script>
s等),那么你应该只将您想要的内容片段(按id
)加载到目标中。在所有情况下,请避免load()
包含<script>
的HTML内容;根据具体情况,结果是什么都没有,或者没什么明智的。
上面的所有代码中js:
都没有做任何事情,应该省略。
答案 1 :(得分:1)
如果加载是问题,则可能是您已加载(并覆盖)当前加载的库,其中可能包含带有对话框插件的jQuery。确保加载一个干净的页面,(每当我使用AJAX时,我通常只生成一个<div>
或<ul>
,无论我需要什么,而不是整个网页。
如果失败,请确保包含正确的javascript文件,包括jQuery和jQuery UI。
检查浏览器的网络/资源跟踪这些脚本文件的内容,并查看javascript文件中是否还有其他错误消息(可能是404未找到?)。
答案 2 :(得分:0)
如上所述,您可能会覆盖库。
处理它的一种方法是确保加载正确的文件。
另一种方法是在对话框和对话框中的内容之间插入iframe。浏览器将iframe视为具有自己脚本的单独页面。因此,内容“在iframe之上”的脚本将与“iframe”下面的对话框的脚本分开。
由于您使用的是Yii,请检查此wiki。