javaScript onClick没有'当从另一个页面上的DIV内部加载的页面执行时,无法工作
javaScript onClick doesn't work when executed from page loaded inside a DIV on another page
我有两个页面:home.php和metrics.php
如果我直接加载metrics.php,并点击与此代码相关的按钮:
<button class="btn btn-warning btn-sm dropdown-toggle" onClick ="$('#box-table-a').tableExport({type:'excel',escape:'false'});"> <img src='img/xls.png' width='24px'>Export Table Data</button>
它正确执行该表导出javascript文件并为我导出一个文件。
但是,我不会直接将metrics.php加载到地址栏中。我使用的是main.php上的下拉菜单:
<select class="navbar-inverse" placeholder="Report" onchange="showPage(this.value)">
<option value="/main.php">Report</option>
<option value="/metrics.php">Metrics</option>
</select>
然后通过以下javaScript函数将metrics.php填充到main.php页面上的DIV中:
function showPage(str) {
if (str !==".PM") {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
}
$("#txtHint").load((str));
}
</script>
问题:
当我直接加载metrics.php,但在main.php上的DIV中加载时,是什么导致这个按钮正常工作?
我的控制台没有任何错误,我只是点击按钮,什么也没发生。
我认为问题是在通过ajax加载子页面之前绑定了事件onclick,因此在创建新的HTML节点时不会绑定它们。您可以使用jquery的live函数来绑定onclick。类似于:
$(document).ready(function(){
$("#your_node").live("click","your function here");
});
听起来你没有在home.php上加载tableExport插件。动态加载的HTML中的<script>
没有运行。如果你想让jQuery和tableExport插件在home.php上工作,你必须在那里包含它们,或者解析metrics.php的内容并手动eval()
所有的JavaScript。
更新
刚刚想到了这个解决方案:
$("#txtHint").load(str, function () {
// check whether tableExport plugin is loaded
if (typeof $.tableExport !== "function") {
$.getScript("/path-to/tableExport.js");
}
});
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何在从浏览缓存加载页面时执行javascript
- Jquery:代码在rails中的页面加载时未执行
- 如何准确执行加载脚本&退出弹出窗口
- 页面在我的javascript执行后重新加载,我不希望它这样做
- 加载服务器端渲染的React组件后执行脚本
- jQuery-在页面加载时执行一个函数
- ajax加载了内容,脚本没有执行
- 如何在加载完整页面后严格执行javascript代码
- 在动态加载的对话框中执行Javascript
- Dojo AMD加载程序执行定义具有空/缺失依赖项的回调
- 通过AJAX加载页面并执行javascript和CSS
- 在外部JS执行后加载JavaScript
- 如何在Ajax加载新内容时停止JavaScript执行
- Chrome扩展:加载窗口后执行脚本
- LABjs错误:脚本总是使用.script()来执行加载的序列
- 执行加载更多函数时的LIMIT子句
- 动态加载的SVG;似乎不再执行加载函数了
- ie7不使用jquery执行加载的脚本