如果我删除alert()脚本停止执行

时间:2012-12-02 09:53:43

标签: jquery events

$("div[id^='BlockHeading']").live("click", function () {

    var text = $(this).text().toString();
    if ($(this).next().css("display") == "none") {
        $(this).empty();
        $(this).html("" + text + " <img src='../img/109041_25936_16_chevron_collapse_icon.png' height='12' width='12' style='float:right'>")
        iframeresize();
        $(this).focus();
    } else {
        $(this).empty();
        $(this).html("" + text + " <img src='../img/109041_25936_16_chevron_collapse_iconDown.png' height='12' width='12' style='float:right'>")
        iframeresize();
        $(this).focus();
    }
    jQuery(this).next(".content").slideToggle(100);
});

我试图在事件发生后调整IFRAME的大小。以上显示了一个这样的事件。但是,问题出现在函数iframeresize()中 - 如果我在调用它之前触发alert(),或者在函数本身内部调用它,并且它在debug-window中起作用。萤火虫 - 但除非alert()存在,否则根本不起作用......

我错过了什么?

修改 iframeresize()的代码:

function iframeresize() { 
     $("#frame1", parent.document).css("height", $("#form1").height() + 100);
     $("#container", parent.document).css("height", $("#form1").height() + 100); 
}

2 个答案:

答案 0 :(得分:0)

尝试从超时调用它,让其余代码继续执行。

...
setTimeout(iframeresize, 10);
...

答案 1 :(得分:0)

我删除了$(this).empty(),因为无论如何你都要为元素分配新的html。 测试此代码,证明它有效(http://jsfiddle.net/Zt3eP/17/) 因此,代码的某些其他部分可能存在问题,而不是您显示的内容。

$("div[id^='BlockHeading']").live("click", function () {
    var text = $(this).text().toString();
    if ($(this).next().css("display") == "none") {
        $(this).html("" + text + " <img src='../img/109041_25936_16_chevron_collapse_icon.png' height='12' width='12' style='float:right'>")
        iframeresize();
        $(this).focus();
    } else {
        $(this).html("" + text + " <img src='../img/109041_25936_16_chevron_collapse_iconDown.png' height='12' width='12' style='float:right'>")
        iframeresize();
        $(this).focus();
    }
    $(this).next(".content").slideToggle(100);
});
function iframeresize(){
    console.log('resize');
}
​