我需要创建一个带有iframe的jQuery对话框,该iframe指向同一域下的页面。我只想要该页面的特定ID,而不是整个事物。我不能使用.load(),因为源页面上有链接,如果有人点击它们,那么带有对话框的页面会刷新,我不能拥有它。我希望有办法解决这个问题。这就是我试过的:
$('<iframe src="'+frameurl+'" id="dialogframe" frameBorder="0" />').contents().find("#idthatiwant").dialog({attributes});
答案 0 :(得分:0)
这可能不是你想要的,如果没有,我会道歉,但当我处于同样的危机时它对我有用。
我们的想法是设置div的href,普通的ajax,但要覆盖click并提交事件以使用ajax。因此像iframe一样工作,但实际上并不是iframe。
我有一个名为externalContainer的div,这里是js:
$('#externalContainer form').live("submit", function(event) {
$(this).ajaxSubmit({target: '#externalContainer'});
return false;
});
$('#externalContainer a').live('click', function(event){
var jthis = $(this);
if (jthis.attr('href') != "#"){
event.preventDefault();
$('#externalContainer').load(jthis.attr('href'));
}
});
然后我会简单地调用$('#externalContainer').load("file.php");
加载新的html。
这不具备普通iframe的所有“功能”,但可能能够满足您的需求。
应该注意的是,我发现这种技术我相信stackoverflow上的另一个问题:)。
编辑: 应该注意的是,这也允许来自“iframe”内的ajax内容,这就是我验证href不等于'#'的原因。如果您打算使用表单提交内容,这还取决于ajaxForm jquery插件。