jQuery iframe选择源DOM元素

时间:2011-10-26 17:30:01

标签: jquery iframe jquery-traversing

我需要创建一个带有iframe的jQuery对话框,该iframe指向同一域下的页面。我只想要该页面的特定ID,而不是整个事物。我不能使用.load(),因为源页面上有链接,如果有人点击它们,那么带有对话框的页面会刷新,我不能拥有它。我希望有办法解决这个问题。这就是我试过的:

$('<iframe src="'+frameurl+'" id="dialogframe" frameBorder="0" />').contents().find("#idthatiwant").dialog({attributes});

1 个答案:

答案 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插件。