0
$("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イベントが発生した後にサイズを変更しようとしています。上記は、そのようなイベントの 1 つを示しています。ただし、問題は関数で発生しますiframeresize()-alert()呼び出す前に を起動すると呼び出されるか、関数自体の中で... debug-windowFirebug から動作しますが、 が存在しない限りまったく動作しませんalert()...

私は何が欠けていますか?

のコードを編集iframeresize()します。

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

2 に答える 2

0

タイムアウトから呼び出してみて、残りのコードの実行を継続させます。

...
setTimeout(iframeresize, 10);
...
于 2012-12-02T10:00:39.810 に答える
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');
}
​
于 2012-12-05T15:48:04.830 に答える