2017-04-12 83 views
1

我点击时遇到了点燃事件window.onload事件,看起来对我不起作用。JQuery Click不起作用window.onload

例如,当我点击复选框时,他们将调用函数来渲染带有内容的iframe。如果取消注释第2行callOnLoad(),iframe将加载内容,但这不是我所期望的,我期望在复选框被选中时,iframe中的内容将被呈现。

JSFiddle Demo

+0

所以你W¯¯蚂蚁iframe将显示在窗口加载和文本出现时复选框点击? –

+0

如果单击复选框,则不会有事件发生。只有在进入页面时才会触发onload。 – hydrococcus

回答

1

我认为你要下面的事情: -

的iframe将显示在页面加载(或窗口负载),但文字显示/时复选框选中消失/选中?

如果是做象下面这样: -

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<body> 
    <input type="checkbox" id="cgv" /> 
     <div id="foo"></div> 
</body> 

<script> 
$(document).ready(function() { 
    callOnLoad(); 
    $('#cgv').on('click', function(e) { 
     if ($('#cgv:checked').length !== 0) { 
      $('#iframe').contents().find("body").append('Test <br/>' + new Date()); 
     } else { 
      $('#iframe').contents().find("body").html(''); 
     } 
    }); 
}); 
// Function render iframe 
function callOnLoad() { 
    $("#foo").append("<div id=\"div-parent\"><iframe id=\"iframe\"></iframe></div>"); 
} 
</script> 
+0

感谢'活着死',你的昵称让我感到恐慌...... LOL ...它是处理我的问题的一种非常聪明的方式,但重点是那些iframe不是从我的服务器渲染的,而是从另一个源渲染的,我们无法编辑或更改iframe,它会导致'阻止与我的服务器URL“我的服务器URL”访问跨源框架。' –

+0

@MikeNguyen如果iframe通过第三方来,那么你不能做任何事情在你的末尾。对不起但是真的 –

1

检查Fiddle

JS:

// Add your javascript here 
$(function() { 
    $('#cgv').on('click', function(e) { 
    if ($('#cgv:checked').length !== 0) { 
     callOnLoad(); // Load iframe here, iframe does not work, the content does not render 
    } else { 
     $('#div-parent').remove(); // Remove div, 
    } 
    }); 
}); 

// Function render iframe 
function callOnLoad() { 
    $("#foo").append("<div id=\"div-parent\"><iframe id=\"iframe\" class=\"active\"></iframe></div>"); 
    var iframe = $("#foo").find('[id="iframe"]'); 
iframe.contents().find("body").append('Test <br/>' + new Date()); 

} 

HTML:

<input type="checkbox" id="cgv" /> 
    <div id="foo"> 
    </div> 
+0

感谢RonyLoud,我还没有测试过它,但它是处理我的问题的非常聪明的方式......但重点是这个iframe是从另一个URL渲染的,我们不能追加任何内容会导致跨上下文iframe。 ..bla bla ... –