使用innerhtml在iframe回发之后重新启动jquery

时间:2011-11-09 12:38:46

标签: javascript jquery html iframe

HIA

我正在尝试一些jquery的东西。简单,基本上:它是一个带有表格的页面。我有一个simpe jquery,它可以在onmouseover / out上创建一个效果,并在点击一条线时创建一个toggle。单击一行也可以将一个http请求激活到iframe中,生成两个新表并使用innerHTML javascript将它们写回父窗口。

从iframe中创建的新表对onmouseover / out效果使用相同的jquery内容。但这不起作用,因为我假设$(文件).ready(function()已经过去运行并且没有'处理'新插入的表。

如何从iframe中重新运行$(document).ready(function()?简单地将javascript写回到父级不起作用,因为它没有被执行(也用简单的'alert'测试)我已将所有jquery init内容放入一个单独的函数中:

$(document).ready(function(){
    initjquery()
});

function initjquery(){
        $("#jqtbody tr").bind( "mouseover", function(e){
            $(this).toggleClass("highlighted");
        });
        $("#jqtbody tr").bind( "mouseout", function(e){
            $(this).toggleClass("highlighted");
        });
    }

查看图片以获得一些视觉“帮助”(对不起,我是新手,我不允许在此处嵌入图片) http://beta2.nextron.ch/temp/unibas.jpg

感谢您的帮助!

的Lukas

1 个答案:

答案 0 :(得分:0)

尝试执行以下操作:

  • 1)创建占位符以在需要时保存动态表
  • 2)当你发出http请求时,一定要只返回表格的完整html(不需要iframe)
  • 3)当请求到达页面(表的html源)时,将此表放入占位符中,使用$(占位符).append(htmlOfTheDynamicTable)

通过使用这种方法,并使用append(),jQuery也会自动加载这些元素的所有事件。如果你直接使用innerHTML(或者使用jQuery样式,使用$(target).html(html)),那么“应该”附加到动态加载的HTML的事件将无效。