强制委托 Iframe 内容工作的方法

Some way to force delegate work for Iframe content?

本文关键字:工作 方法 Iframe      更新时间:2023-09-26
  var $result_link = $('#sample_test').contents().find('#get_result_link');

这就是我在 iframe 中找到带有 id #sample_test 的链接的方式

此代码有效:

$result_link.click(function(){
       if ($contents.find('.new_answer').length!=0){
               $('html, body').animate({
                   scrollTop: $contents.find('.new_answer').first().offset().top/2
               }, 500);
           }
});

但是在 iframe 源代码上有 AJAX 操作,它可以解除绑定这个"点击"(使用此链接重新加载元素(。通常delegate不起作用(我使用适当版本的JQ(

  $('body').delegate('#sample_test', 'click', function(){
       if ($contents.find('.new_answer').length!=0){
           $('html, body').animate({
               scrollTop: $contents.find('.new_answer').first().offset().top/2
           }, 500);
       }

    })

事件传播不会跨越帧边界。

您需要将委派处理程序绑定到<iframe><body>

尝试这样的事情。

var frame = $('iframe').contents();
frame.on('click', '#sample_test', function() {
   // Code here.
});

这样,您将事件应用于框架而不是父级。