调用iFrame按钮,然后调用父按钮

时间:2015-11-09 06:35:05

标签: javascript jquery callback jquery-callback

我在iFrame中有一个按钮,在父窗口中有一个按钮。 iFrame中的按钮是从父窗口触发的。我有一组要从两个按钮执行的代码。代码的一部分特定于iFrame,代码的一部分特定于父窗口。我能够触发iFrame按钮,但问题是父窗口代码在iFrame按钮完成它的操作之前运行。

请帮助我实现这一目标。

请提前建议并提前致谢。

2 个答案:

答案 0 :(得分:2)

在外部文档中,设置button2以创建一个新事件,其中包含您在button1完成后要执行的操作链,并将其分派给内部按钮。

根据您要执行的操作,您可能必须在此单击处理程序中声明延迟操作所需的任何变量,以便它们成为闭包的一部分。

$(function(){
    $("#button2").click(function(e){
        var action = function() {
            setTimeout(function(){alert("button2 action")},6000);
        }
        var innerButton = $("iframe#frame").contents()
            .find("#button1");
        e.detail = action;
        var evt = new CustomEvent('click',e);
        innerButton[0].dispatchEvent(evt);
    });
});

在内部文档中,在执行按钮单击的常规操作后,检查是否随事件一起传递了其他操作,然后执行它们。

$(function () {
    $("#button1").click(function (evt) {
        setTimeout(function () {
            alert("button1 click");
            if (typeof evt.originalEvent.detail == 'function') evt.originalEvent.detail(evt);
        }, 3000);
    });
});

以下是一对jsFiddles,一个用于inner,另一个用于outer,其中包含内部(非常非常粗略)的iframe。

答案 1 :(得分:1)

你可以这样做,

protected void dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(dropdownlist1.Text))
         //Some code to remove the selected item from list so the user can not see it in the select list anymore

    dropdownlist1.DataSource = myList;
    dropdownlist1.DataBind();

    dropdownlist2.DataSource = myList;
    dropdownlist2.DataBind();

    dropdownlist3.DataSource = myList;
    dropdownlist3.DataBind();

    //...
}

Fiddle