Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过单击模态iframe关闭对话框?_Javascript_Jquery_Iframe_Dialog_Modal Dialog - Fatal编程技术网

Javascript 通过单击模态iframe关闭对话框?

Javascript 通过单击模态iframe关闭对话框?,javascript,jquery,iframe,dialog,modal-dialog,Javascript,Jquery,Iframe,Dialog,Modal Dialog,我正在创建一个模态对话框。首先,我将iframe附加到body标记以充当覆盖 <div class="modal-screen"> <iframe src="javascript:false;"></iframe> </div> 现在,我想在用户单击覆盖时关闭对话框。问题是我似乎无法绑定到任何与覆盖相关的事件 总结一下我的JS,我的对话框视图基本上有一个initialize方法,其中准备了覆盖: initialize: function()

我正在创建一个模态对话框。首先,我将iframe附加到
body
标记以充当覆盖

<div class="modal-screen">
  <iframe src="javascript:false;"></iframe>
</div>
现在,我想在用户单击覆盖时关闭对话框。问题是我似乎无法绑定到任何与覆盖相关的事件

总结一下我的JS,我的对话框视图基本上有一个
initialize
方法,其中准备了覆盖:

initialize: function() {
  this.modal = $('<div class="modal-screen"><iframe src="javascript:false;"></iframe></div>')

  this.modal.on('click', function(e) {
    // this event never seems to fire
    console.log("hello");
  }
}

modal不是一个单独的元素,而是一个DOM对象,这就是为什么不能在它上面绑定任何东西。请尝试绑定$('.modal screen',this.modal)。

这里没有理由使用iframe。只需构造一个,然后在单击时将其删除。

绑定到
this.modal.find('.modal screen')
应该与您所说的相同,对吗?除了
iframe
之外,我似乎在这个.modal中找不到任何东西。记录
this.modal.find('*')
为我提供了iframe元素。我似乎无法将事件绑定到它,也无法获取其中的任何元素。我在书中读到,最好使用iframe。然而,你建议的解决方案似乎很有效,所以我会一直坚持下去,直到我有更好的理由不这么做。
initialize: function() {
  this.modal = $('<div class="modal-screen"><iframe src="javascript:false;"></iframe></div>')

  this.modal.on('click', function(e) {
    // this event never seems to fire
    console.log("hello");
  }
}
render: function() {
  $('body').append(this.modal);
  // append other dialog content
  this
}