我在我的生产网站上有这个工作,但我正在处理一个新的网站版本而无法在模式对话框中打开链接。页面上有这个代码:
<a class="dialogify" id="TosLink" href="http://link.to.my.site.com/common/legal/termsAndConditions.htm" title="Terms and Conditions">Terms and Conditions</a>
我在页面上包含jquery和jquery-ui,然后用它来配置点击:
$(document).ready(function () {
$("#dialog").dialog({
autoOpen: false,
modal: true,
width: 500,
height: 450,
buttons: {
"Dismiss": function () {
$(this).dialog("close");
}
}
});
$(".ui-dialog-title").css({
"font-size": +16 + "px"
});
$(".dialogify").on("click", function (e) {
e.preventDefault();
$("#dialog").html("");
$("#dialog").dialog("option", "title", "Loading...").dialog("open");
$("#dialog").load(this.href, function () {
$(this).dialog("option", "title", $(this).find("h1").text());
$(this).find("h1").remove();
});
});
});
我在.load上面放了一个警告(this.href),它正在获取正确的URL,但没有任何反应。控制台或firebug中没有显示错误。
编辑 - 错误的复制粘贴 - 有额外的功能(){ - 从代码中删除但仍然无法打开对话框。
答案 0 :(得分:1)
为什么有
$(function(){
在第二行重复? 这是不必要的。
我认为你的代码无法工作的原因是因为.load()的第二个参数应该是数据,而回调函数是第三个参数。我有同样的问题。我通过使用空数组(array(),{}或简称为null)来代替数据来修复它。
将您的代码更改为:
$("#dialog").load(this.href, null, function () {
$(this).dialog("option", "title", $(this).find("h1").text());
$(this).find("h1").remove();
});
希望有所帮助:)