jQuery.trigger()没有在刷新时触发

时间:2015-11-05 11:27:11

标签: javascript jquery html iframe

我有一个html页面$('form[name="Register"] input').filter(function(){ return $(this).attr('name') === 'userName' }).val(); ,其中包含一个iframe,其中包含另一个页面Home.htm,即

Child.htm

<body> <div> <iframe id="child-iframe" src="Child.htm"></iframe> </div> </body> 还包含一些检索数据的Home.htm,并根据此数据检索更多信息,然后触发javascript/jQuery文件中设置的事件,以在{{1}中显示此信息,即

Child.htm

Child.htm内,我使用<script> $(document).ready(function () { $.getJSON("http://getsummarydata/001") .done(function (data) { if (data meets some condition) { $.getJSON("http://getspecificdata/001") .done(function (data) { // Trigger the event var target = $("#child-iframe"); if (target[0] !== undefined) { target[0].contentWindow.$(target[0].contentWindow.document).trigger("data-available", [data]); } }); } } }); </script> 设置了自定义事件Child.htm及其处理程序,如下所示;

data-available

首次加载jQuery页面时,会成功检索数据,触发事件并在iframe中按预期显示数据。但是,当我刷新<script> // Event handler function myFunc(data) { // Display the data } // Event $(document).on('data-available', function (__e, __data) { myFunc(__data); }); </script> (F5)时,数据仍然被检索,但触发器不再被触发 - 事实上我得到以下错误。

Home.htm

即使target [0] .contentWindow似乎没问题。

我不知道为什么会在刷新时发生这种情况,并且非常感谢您解决此问题的任何帮助。

1 个答案:

答案 0 :(得分:1)

听起来你的事件在iframe完全加载之前就已经开始了。这可以解释为什么它在需要时找不到$,但是当你检查它时它就在那里。一个可能的原因可能是您的数据请求被缓存,因此几乎立即返回。